MySQL常用函数——字符串函数

字符串函数:

1.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 字符串查找

  1. 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前面有空格也不行,这个不是子串查找。

  1. field(str, str1, str2, … strn)
    返回和第一个字符串str匹配的字符串的位置.
select field("excel", "data study", "python", "mysql", "excel");
#结果为4
  1. 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
  1. right(str, num)
    获取str的后面num个字母。
select right("sunny", 2);  #ny
  1. 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"), "‐"));

在这里插入图片描述

  1. rtrim(str)
    去掉结尾处空格
select RTRIM("ning  ");   #ning

SELECT CONCAT("‐", "sunny", "‐"),
CHAR_LENGTH(CONCAT("‐", "sunny", "‐")),
CONCAT("‐", RTRIM("sunny "), "‐"),
CHAR_LENGTH(CONCAT("‐", RTRIM("sunny "), "‐"));

在这里插入图片描述

  1. (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") 替换后字符串;

在这里插入图片描述

发布了49 篇原创文章 · 获赞 76 · 访问量 2706

猜你喜欢

转载自blog.csdn.net/qq_39783601/article/details/104628149