6-字符串函数

字符串函数:
1.1 字符串合并 concat 、concat_ws
1.2 字符串比较 strcmp
1.3 字符串长度 length、char_length
1.4 大小写转换 lower、upper
1.5 字符串查找
1.6 字符串截取子串
1.7 去除字符串的首尾空格
1.8 替换字符串

字符串函数:
.1 字符串合并 concat 、concat_ws
①concat(s1, s2…,sn):将多个字符串合并起来。

concat不仅可以接受字符串还能接受其他类型。

select concat("sunny " , " is" , " a", " teacher") as 'concat'

结果:sunny is a teacher

select CONCAT(CURDATE(),"‐",12.34);

结果:2020-03-03‐12.34

②concat_ws(sep, s1, …sn):用分隔符将字符串连接。

select concat_ws(" ","sunny","is","a","teacher")as'desc';

结果:sunny is a teacher

select concat_ws("+","sunny","is","a","teacher")as'desc';

sunny+is+a+teacher
sep不能为null不然后续的都会被忽略掉。

select concat_ws(NULL,"sunny","is","a","teacher")as'desc';

结果:什么都没有,为空

1.2 字符串比较 strcmp
strcmp(str1, str2): 如果str1大于str2 返回结果1, 如果str1小于str2 返回‐1, str1等于str2返回0

select  STRCMP("abc","bcd");
select strcmp("a","A");
select STRCMP("abc","abb");

结果分别为:
-1, 0,1

1.3 字符串长度 length、char_length
length(str) 获取字符串长度。

select "ningnali",
length("ningnali"),
"数据分析",
length("数据分析");

结果:
在这里插入图片描述

注: 英文占用一个字节, 一个汉字占多少长度与编码有关(这里的编码是指编辑器): UTF‐8:一个汉字=3个字节 GBK:一个汉字=2个字节

如果想正确获取中文的个数使用
char_length:

select "ningnali",
length("ningnali"),
"数据分析",
CHAR_LENGTH("数据分析");

结果:
在这里插入图片描述
1.4 大小写转换 lower、upper
lower 将字符由大写转为小写
upper 将字符由小写转为大写

select "sunny",
UPPER("sunny");
#SUNNY
select "SUNNY",
lower("sunny");
#sunny

1.5 字符串查找
find_in_set(str1, str2)
返回str2与str1相匹配的位置, str2中包含若干个用逗号隔开的字符串。

select find_in_set("excel", "data study, python, mysql,excel");
  #结果为4,如果excel前有空格,结果则是0

上述方法很娇气。后续字符串是一个set,只是用逗号隔开而已,大家可以看错python中的字符串用
逗号分割成一个set,所以最后的excel前面有空格也不行,这个不是子串查找。
field(str, str1, str2, … strn)
返回和第一个字符串str匹配的字符串的位置。
返回和第一个字符串str匹配的字符串的位置。

select field("excel", "data study", "python", "mysql", "excel");
#结果为4

locate(str1, str)、 position(str1 in str)
返回str中str1的开始位置。

select LOCATE("na","ningnali"),
POSITION("na" in "ningnali");

结果:
在这里插入图片描述
1.6 字符串截取子串
1.left(str, num)
获取str字符串的前num个字母。

select LEFT("sunny", 2);   #su
  **2. right(str, num)**

获取str的后面num个字母。

select right("sunny", 2);  #ny
  **3. substring(str, num, len)**

获取str的从num开始的len个字母。

select substring("sunny",2,2);#un

1.7 去除字符串的首尾空格
1.ltrim(str)
去掉开始处空格

select LTRIM("  ning");  #ning
SELECT CONCAT("‐", "sunny", "‐"),
CHAR_LENGTH(CONCAT("‐", "sunny", "‐")),
CONCAT("‐", LTRIM(" sunny"), "‐"),
CHAR_LENGTH(CONCAT("‐", LTRIM(" sunny"), "‐"));

在这里插入图片描述
2. rtrim(str)
去掉结尾处空格

select RTRIM("ning  ");   #ning
SELECT CONCAT("‐", "sunny", "‐"),
CHAR_LENGTH(CONCAT("‐", "sunny", "‐")),
CONCAT("‐", RTRIM("sunny "), "‐"),
CHAR_LENGTH(CONCAT("‐", RTRIM("sunny "), "‐"));

在这里插入图片描述
3. (str)
去掉首尾空格

select trim(" ning ");   #ning
SELECT CONCAT("‐", "sunny", "‐"),
CHAR_LENGTH(CONCAT("‐", "sunny", "‐")),
CONCAT("‐", TRIM(" sunny "), "‐"),
CHAR_LENGTH(CONCAT("‐", TRIM(" sunny "), "‐"));

在这里插入图片描述
1.8 替换字符串
① insert(str, pos, len, newstr )
str:待插入字符串
pos:开始位置
len:长度
newstr:新字符串
1、如果参数post的值超过字符串长度,则返回原始字符串,如果len的长度大于str的剩余的长度,则从post开始全部替换,任何参数为null都返回null。

select "这是mysql数据库管理系统" 字符串,
insert("这是mysql数据库管理系统", 3, 5, "oracle");

在这里插入图片描述
2、起始位置大于字符串长度。

select "这是mysql数据库管理系统" 字符串,
char_length("这是mysql数据库管理系统") 长度,
insert("这是mysql数据库管理系统", 3, 5, "oracle") 转化后,
char_length(insert("这是mysql数据库管理系统", 16, 15, "oracle")) 转化后长度;

在这里插入图片描述
3、所替换的长度大于原来剩余的字符串长度

select "这是mysql数据库管理系统" 字符串,
char_length("这是mysql数据库管理系统") 长度,
insert("这是mysql数据库管理系统", 3, 15, "oracle") 转化后,
char_length(insert("这是mysql数据库管理系统", 3, 15, "oracle")) 转化后长度;

在这里插入图片描述
②replace(str, substr, newstr)
用newstr替换str中的substr。

select "这是mysql数据库管理系统" 原字符串,
REPLACE("这是mysql数据库管理系统", "mysql", "oracle") 替换后字符串;

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值