mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

时间:2021-03-25 09:02:08
注:sql的移植性比较强,函数的移植性不强,一般为数据库软件特有,例如mysql有mysql的函数,oracle有oracle的函数。

1、concat连接字符串:
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

从上图中可以看出,直接使用select concat就可以连接任意两个以上的字符串,同时也可以用来连接查询结果,一般情况中也是会用来连接查询结果。需要注意的是,如果连接的内容有null存在的话,那么结果就只会是null。

2、concat_ws使用分隔符连接字符串:
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

在上边的语法中,第一个字符传代表指定的连接格式,其他的代表需要连接的字符串内容。与concat还有所不同的是,这里如果出现null,null会被忽略掉。

3、strcmp比较字符串的大小:
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

如上图可以看到,当第一个字符串小于第二个时返回-1,反之返回1,如果相等则返回0.

4、length和char_length来获取字符串的长度:
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

从图中可以看出length计算的是字节数长度,而char_length计算的是字符数长度。

5、使用upper或ucase和lower或lcase来实现对英文字符的大小写转换:
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

6、find_in_set查找字符串的位置:
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

如图可以看到,需要查找的字符串必须满足一定的格式,即需要逗号隔开,因此这里不能理解为子字符串。

7、使用field查找字符串的位置:
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

注意这里和上一个的区别,一个是在同一个字符串中用逗号隔开,而这里是几个字符串。

8、locate、position和instr查找字符串的位置:
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

这里三个的作用基本一样,只是使用的语法略有不同,position要和in结合使用,locate和instr的参数位置相反,都是返回一个字符串中子字符串的位置。

9、使用elt返回指定位置的字符串,语法格式和field类似:
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

10、从现有字符串中截取子字符串:
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

其中left指从最左开始截取指定长度的字符串,right是从右开始;substring和mid的第一个数字参数指开始截取的位置,第二个数字参数指截取的长度。

11、去除字符串的空格:
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

ltrim去掉左边的空格,rtrim去掉右边的空格,trim去掉前后的空格,只是这里都不太好看出来。

12、insert字符串替换:
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

如图可以看出,第一个参数为原始字符串,第二个为需要替换的其实位置,第三个表示需要替换的长度,第四个表示用来替换原字符串的新字符串;需要注意的是,当指定的需要替换长度超过剩余长度时会替换所有,当指定的位置刚好是比字符串长度大一时,会把新字符串加到末尾,当指定的位置比字符串长度大2以上时,原字符串不变。

13、replace替换字符串:
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】
mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

与上边不同的是,这里不是指定位置和长度,而是直接指定一个字符串,如果这个字符串不存在原字符串中,则替换失败。