MySQL单组函数之字符函数

#字符串函数
/*
ASCII('AB') 返回字符串ab 的第一个字符的 ASCII 码
LOWER('SQL Course') : 将字符串的内容全部变成小写
UCASE(s)/UPPER(s)将字符串 s 的所有字母变成大写字母
UPPER('SQL Course') : 将字符串的内容全部变成大写
LCASE(s)/LOWER(s)将字符串 s 的所有字母变成小写字母
*/

 

/*
CONCAT(s1,s2…sn)字符串 s1,s2 等多个字符串合并为一个字符串,字符串拼接
CONCAT_WS(separator,str1,str2,...)

    CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
注意:
如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。

如连接后以逗号分隔 


SUBSTR('HelloWorld',1,5) : 截取子串,从1的位置开始长度为5
	注意:索引位置是从1开始
SUBSTR/SUBSTRING(s, start, length)从字符串 s 的 start 位置截取长度为 length 的子字符串	
LENGTH/CHAR_LENGTH(s)/CHARACTER_LENGTH(s)返回字符串 s 的字符数
INSTR('HelloWorld', 'W') : w在字符串中第一次出现的位置(从左向右)
POSITION(s1 IN s)从字符串 s 中获取 s1 的开始位置	
FIND_IN_SET(s1,s2)返回在字符串s2中与s1匹配的字符串的位置
LPAD(salary,10,'*') :右对齐
	第一个参数:内容
	第二个参数:内容的长度
	第三个参数:如果内容的长度不够用什么补
RPAD(salary, 10, '*') : 左对齐
	第一个参数:内容
	第二个参数:内容的长度
	第三个参数:如果内容的长度不够用什么补
	
	
TRIM('H' FROM 'HelloWorld'):去除字符串两端指定的字符
TRIM(s)去掉字符串 s 开始和结尾处的空格
LTRIM(s)去掉字符串 s 开始处的空格	
RTRIM(s)去掉字符串 s 结尾处的空格	
REPLACE('abcd','b','m') : 将字符串中的b替换成m
*/
SELECT CONCAT('hello','longge'),SUBSTR('hellolongge',2,5),LENGTH('aaa'),INSTR('hellowaaaooow','w'),POSITION('w'IN 'hellowaaaooow')	;

SELECT CONCAT(first_name,last_name)
FROM employees;

SELECT LPAD(first_name,20,' '),RPAD(last_name,20,' ')
FROM employees;

SELECT TRIM('  HHe dH  '),TRIM('H' FROM 'HHHelloHWorldHH'),LTRIM('    RUNOOB    '),RTRIM('    RUNOOB    ');
SELECT REPLACE('abcdbbbb','b','m'),FIND_IN_SET("c", "a,b,c,d,e");

 

group_concat函数
完整的语法如下:
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

 

 
/*
FORMAT(x,n)函数可以将数字 x 进行格式化 “#,###.##”, 将 x 保留到小数点后 n 位,最后一位四舍五入
INSERT(s1,x,len,s2)字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串
LOCATE(s1,s)从字符串 s 中获取 s1 的开始位置
REPEAT(s,n)将字符串 s 重复 n 次
REVERSE(s)将字符串s的顺序反过来
STRCMP(s1,s2)比较字符串 s1 和 s2,如果 s1 与 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1<s2 返回 -1
*/
SELECT FORMAT(250500.5634, 2),INSERT("google.com", 1, 6, "runnob"), LOCATE('st','myteststring'),REPEAT('runoob',3),REVERSE('abc'),STRCMP("aunoob", "runoob"); 

基本查询

mysql> select * from aa;
+------+------+
| id| name |
+------+------+
|1 | 10|
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200   |
|3 | 500   |
+------+------+
6 rows in set (0.00 sec)

以id分组,把name字段的值打印在一行,逗号分隔(默认)

mysql> select id,group_concat(name) from aa group by id;
+------+--------------------+
| id| group_concat(name) |
+------+--------------------+
|1 | 10,20,20|
|2 | 20 |
|3 | 200,500|
+------+--------------------+
3 rows in set (0.00 sec)

以id分组,把name字段的值打印在一行,分号分隔

mysql> select id,group_concat(name separator ';') from aa group by id;
+------+----------------------------------+
| id| group_concat(name separator ';') |
+------+----------------------------------+
|1 | 10;20;20 |
|2 | 20|
|3 | 200;500   |
+------+----------------------------------+
3 rows in set (0.00 sec)

以id分组,把去冗余的name字段的值打印在一行,

逗号分隔

mysql> select id,group_concat(distinct name) from aa group by id;
+------+-----------------------------+
| id| group_concat(distinct name) |
+------+-----------------------------+
|1 | 10,20|
|2 | 20   |
|3 | 200,500 |
+------+-----------------------------+
3 rows in set (0.00 sec)

以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序

mysql> select id,group_concat(name order by name desc) from aa group by id;
+------+---------------------------------------+
| id| group_concat(name order by name desc) |
+------+---------------------------------------+
|1 | 20,20,10   |
|2 | 20|
|3 | 500,200|
+------+---------------------------------------+
3 rows in set (0.00 sec)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值