MYSQL常用字符串函数

时间:2021-08-14 19:13:44

“落叶他乡树,寒灯独夜人”


CANCAT(S1,S2,…Sn)函数:把传入的参数连接成为一个字符串。
下面的例子把“aaa”、“bbb”、“ccc”3 个字符串连接成了一个字符串“aaabbbccc”。另外,任何字符串与 NULL 进行连接的结果都将是 NULL。

mysql> select concat('aaa','bbb','ccc') ,concat('aaa',null);
+---------------------------+--------------------+

| concat('aaa','bbb','ccc') | concat('aaa',null) |
+---------------------------+--------------------+

| aaabbbccc | NULL |
+---------------------------+--------------------+

1 row in set (0.05 sec)

INSERT(str ,x,y,instr)函数:将字符串 str 从第 x 位置开始,y 个字符长的子串替换为字符串 instr。
下面的例子把字符串“beijing2008you”中的从第 12 个字符开始以后的 3 个字符替换成“me”。

mysql> select INSERT('beijing2008you',12,3, 'me') ;
+-------------------------------------+

| INSERT('beijing2008you',12,3, 'me') |
+-------------------------------------+

| beijing2008me |
+-------------------------------------+

1 row in set (0.00 sec)

LOWER(str)和 UPPER(str)函数:把字符串转换成小写或大写。
在字符串比较中,通常要将比较的字符串全部转换为大写或者小写,如下例所示:

mysql> select LOWER('BEIJING2008'), UPPER('beijing2008');
+----------------------+----------------------+

| LOWER('BEIJING2008') | UPPER('beijing2008') |
+----------------------+----------------------+

| beijing2008 | BEIJING2008 |
+----------------------+----------------------+

1 row in set (0.00 sec)

LEFT(str,x)和 RIGHT(str,x)函数:分别返回字符串最左边的x个字符和最右边的x个字符。
如果第二个参数是 NULL,那么将不返回任何字符串。下例中显示了对字符串“beijing2008”应用函数后的结果。

mysql> SELECT LEFT('beijing2008',7),LEFT('beijing',null),RIGHT('beijing2008',4);
+-----------------------+----------------------+------------------------+

| LEFT('beijing2008',7) | LEFT('beijing',null) | RIGHT('beijing2008',4) |
+-----------------------+----------------------+------------------------+

| beijing | | 2008 |
+-----------------------+----------------------+------------------------+

1 row in set (0.00 sec)

LPAD(str,n ,pad)和 RPAD(str,n ,pad)函数:用字符串 pad 对 str 最左边和最右边进行填充,直到长度为 n 个字符长度。
下例中显示了对字符串“2008”和“beijing”分别填充后的结果。

mysql> select lpad('2008',20,'beijing'),rpad('beijing',20,'2008');
+---------------------------+---------------------------+

| lpad('2008',20,'beijing') | rpad('beijing',20,'2008') |
+---------------------------+---------------------------+

| beijingbeijingbe2008 | beijing2008200820082 |
+---------------------------+---------------------------+

1 row in set (0.00 sec)

LTRIM(str)和 RTRIM(str)函数:去掉字符串 str 左侧和右侧空格。
下例中显示了字符串“beijing”加空格进行过滤后的结果。

mysql> select ltrim(' |beijing'),rtrim('beijing| ');
+---------------------+------------------------+

| ltrim(' |beijing') | rtrim('beijing| ') |
+---------------------+------------------------+

| |beijing | beijing| |
+---------------------+------------------------+

1 row in set (0.00 sec)

REPEAT(str,x)函数:返回 str 重复 x 次的结果。
下例中对字符串“mysql”重复显示了 3 次。

mysql> select repeat('mysql ',3);
+--------------------+

| repeat('mysql ',3) |
+--------------------+

| mysql mysql mysql |
+--------------------+

1 row in set (0.00 sec)

REPLACE(str,a,b)函数:用字符串 b 替换字符串 str 中所有出现的字符串 a。
下例中用字符串“2008”代替了字符串“beijing_2010”中的“_2010”。

mysql> select replace('beijing_2010','_2010','2008');
+----------------------------------------+

| replace('beijing_2010','_2010','2008') |
+----------------------------------------+

| beijing2008 |
+----------------------------------------+

1 row in set (0.00 sec)

STRCMP(s1,s2)函数:比较字符串 s1 和 s2 的 ASCII 码值的大小。如果 s1 比 s2 小,那么返回-1;如果 s1 与 s2 相等,那么返回 0;如果 s1 比 s2 大,那么返回 1。
如下例:

mysql> select strcmp('a','b'),strcmp('b','b'),strcmp('c','b');
+-----------------+-----------------+-----------------+

| strcmp('a','b') | strcmp('b','b') | strcmp('c','b') |
+-----------------+-----------------+-----------------+

| -1 | 0 | 1 |
+-----------------+-----------------+-----------------+

1 row in set (0.00 sec)

TRIM(str)函数:去掉目标字符串的开头和结尾的空格。
下例中对字符串“$ beijing2008 $ ”进行了前后空格的过滤。

mysql> select trim(' $ beijing2008 $ ');
+-----------------------------+

| trim(' $ beijing2008 $ ') |
+-----------------------------+

| $ beijing2008 $ |
+-----------------------------+

1 row in set (0.00 sec)

SUBSTRING(str,x,y)函数:返回从字符串 str 中的第 x 位置起 y 个字符长度的字串。此函数经常用来对给定字符串进行字串的提取,如下例所示。

mysql> select substring('beijing2008',8,4),substring('beijing2008',1,7);
+------------------------------+------------------------------+

| substring('beijing2008',8,4) | substring('beijing2008',1,7) |
+------------------------------+------------------------------+

| 2008 | beijing |
+------------------------------+------------------------------+