【MySQL基础】01 字符串函数

如有错误,谢请指正~


概览

//连接s1,s2...sn为一个字符串
concat(s1,s2,...sn) 

//将字符串str从第x位置开始,y个字符长的子串替换为字符串instr
insert(str,x,y,instr)

//将字符串str中的所有字符变为小写
lower(str)

//将字符串str中的所有字符变为大写
upper(str)

//返回字符串str最左边的x字符
left(str,x)

//返回字符串str最右边的x字符
right(str,x)

//用字符串pad对str最左边进行填充,直到长度为n个字符长度
lpad(str,n,pad)

//用字符串pad对str最右边进行填充,直到长度为n个字符长度
rpad(str,n,pad)

//去掉字符串str左侧的空格
ltrim(str)

//去掉字符串str行尾的空格
rtrim(str)

//返回str重复x次的结果
repeat(str,x)

//用字符串b替换字符串str中所有出现的字符串a
replace(str,a,b)

//比较字符串s1和s2
strcmp(s1,s2)

//去掉字符串行尾和行头的空格
trim(str)

//返回从字符串str x位置起y个字符长度的子串
substring(str,x,y)

详解

1 concat

//任何字符串与NULL进行连接的结果都将是 NULL
mysql> select concat('1','-','a'),concat('a',null);
+---------------------+------------------+
| concat('1','-','a') | concat('a',null) |
+---------------------+------------------+
| 1-a                 | NULL             |
+---------------------+------------------+
1 row in set

2 group_concat(expr)

该函数常常和group by分组结合使用,使用逗号拼接group by出来的重复数据。


mysql> select group_concat(t.zone_name) from ts_zone t where t.zone_type = 3 ;
+----------------------------------------------------------------------------------------------+
| group_concat(t.zone_name)                                                                    |
+----------------------------------------------------------------------------------------------+
| 南京市,无锡市,徐州市,常州市,苏州市,南通市,连云港市,淮安市,盐城市,扬州市,镇江市,泰州市,宿迁市 |
+----------------------------------------------------------------------------------------------+
1 row in set
mysql> select substr(t.zone_gb,1,4) as zone_gb, group_concat(t.zone_name) as zone_name from ts_zone t where (t.zone_gb like '3202%' or t.zone_gb like '3204%') and t.zone_type = 4 group by substr(t.zone_gb,1,4);
+---------+--------------------------------------------------------------------------------+
| zone_gb | zone_name                                                                      |
+---------+--------------------------------------------------------------------------------+
| 3202    | 崇安区,不详县,宜兴市,江阴市,梁溪区,滨湖区,无锡新区,惠山区,锡山区,北塘区,南长区 |
| 3204    | 金坛区,武进区,新北区,戚墅堰区,钟楼区,天宁区,溧阳市                             |
+---------+--------------------------------------------------------------------------------+
2 rows in set

mysql> 

3 insert

insert(str,x,y,instr)函数:将字符串 str 从第x位置开始,y个字符长的子串替换为字符串 instr

mysql> select insert('java or php',6,2,'and');
+---------------------------------+
| insert('java or php',6,2,'and') |
+---------------------------------+
| java and php                    |
+---------------------------------+
1 row in set

4 lower(str)、upper(str)

lower(str)小写 和 upper(str)大写 函数:把字符串转换成小写或大写。

mysql> select lower('Java'),upper('java');
+---------------+---------------+
| lower('Java') | upper('java') |
+---------------+---------------+
| java          | JAVA          |
+---------------+---------------+
1 row in set

5 left(str,x)、right(str,x)

left(str,x) 和 right(str,x)函数:分别返回字符串最左边的x个字符和最右边的x个字符,如果第二个参数是 NULL,那么将不返回任何字符串。

mysql> select left('java and php',7),right('java and php',6);
+------------------------+-------------------------+
| left('java and php',7) | right('java and php',6) |
+------------------------+-------------------------+
| java an                | nd php                  |
+------------------------+-------------------------+
1 row in set

mysql> select left('java and php',null),right('java and php',-1);
+---------------------------+--------------------------+
| left('java and php',null) | right('java and php',-1) |
+---------------------------+--------------------------+
| NULL                      |                          |
+---------------------------+--------------------------+
1 row in set

6 lpad(str,n,pad)、rpad(str,n,pad)

lpad(str,n,pad) 和 rpad(str,n,pad)函数:用字符串pad对str 最左边和最右边进行填充,直到长度为n个字符长度。

mysql> select lpad('java',6,'6'),rpad('java',6,'6');
+--------------------+--------------------+
| lpad('java',6,'6') | rpad('java',6,'6') |
+--------------------+--------------------+
| 66java             | java66             |
+--------------------+--------------------+
1 row in set

7 trim(str)、ltrim(str)、rtrim(str)

ltrim(str)和rtrim(str)函数:去掉字符串str左侧和右侧空格

mysql> select ltrim('   java   '),rtrim('   java    ');
+---------------------+----------------------+
| ltrim('   java   ') | rtrim('   java    ') |
+---------------------+----------------------+
| java                |    java              |
+---------------------+----------------------+
1 row in set

mysql> select trim('  java  ');
+------------------+
| trim('  java  ') |
+------------------+
| java             |
+------------------+
1 row in set

8 repeat

repeat(str,x)函数:返回str重复x次的结果。

mysql> select repeat('java',3);
+------------------+
| repeat('java',3) |
+------------------+
| javajavajava     |
+------------------+
1 row in set

9 replace(str,a,b)

replace(str,a,b)函数:用字符串b替换字符串str中所有出现的字符串a。

mysql> select replace('java','a','b');
+-------------------------+
| replace('java','a','b') |
+-------------------------+
| jbvb                    |
+-------------------------+
1 row in set

10 strcmp(s1,s2)

strcmp(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

11 substring(str,pos,[len])

返回从字符串str中的第pos位置起len个字符长度的字串,没有len,默认到字符串结尾。注:pos默认从1开始。

mysql> select substring('java php',1,4),substring('java php',6,3);
+---------------------------+---------------------------+
| substring('java php',1,4) | substring('java php',6,3) |
+---------------------------+---------------------------+
| java                      | php                       |
+---------------------------+---------------------------+
1 row in set

mysql> select substring('java php',6);
+-------------------------+
| substring('java php',6) |
+-------------------------+
| php                     |
+-------------------------+
1 row in set

12 substr(str,pos,len)

同substring



欢迎关注我的微信公众号:JAVA必知必会

  • 分享精品视频资源
  • 分享基础系列文档
image
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容