mysql字符串连接,重复等字符串函数总结
生活随笔
收集整理的這篇文章主要介紹了
mysql字符串连接,重复等字符串函数总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
mysql concat()函數
MySQL的concat函數可以連接一個或者多個字符串,如
select concat('10');
輸出10
select concat('11','22','33');
輸出112233
而Oracle的concat函數只能連接兩個字符串select concat('11','22') from dual;
需要注意MySQL的concat函數在連接字符串的時候,只要其中一個是NULL,那么將返回NULL
select concat('11','22',null);
輸出NULL
而Oracle的concat函數連接的時候,只要有一個字符串不是NULL,就不會返回NULL
select concat('11',NULL) from dual;
輸出11
concat_ws()函數, 表示concat with separator,即有分隔符的字符串連接
如連接后以逗號分隔
select concat_ws(',','11','22','33');
輸出11,22,33
和concat不同的是, concat_ws函數在執行的時候,不會因為NULL值而返回NULL
select concat_ws(',','11','22',NULL);
將輸出11,22
group_concat()可用來行轉列, Oracle沒有這樣的函數
完整的語法如下
group_concat([DISTINCT] 要連接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
如下例子:
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字段的值打印在一行,逗號分隔(默認)
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字段的值打印在一行,分號分隔
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字段的值打印在一行,逗號分隔
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排倒序
```sql
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)
repeat()函數,用來復制字符串,如下'ab'表示要復制的字符串,2表示復制的份數
select repeat('ab',2);
+----------------+
| repeat('ab',2) |
+----------------+
| abab |
+----------------+
1 row in set (0.00 sec)
SPACE(N) 函數。生成N個空格,如
select space(3);
輸出:
+----------+ | space(3) | +----------+ | | +----------+ 1 row in set (0.00 sec)
STRCMP(STR1,STR2) 字符串比較函數,該函數和字符集有關系,默認區分大小寫
若STR1和STR2相同, 則返回 0,若STR1小于STR2, 則返回 -1,若STR1大于STR2, 則返回 1
select strcmp('abc','abc');
輸出0
select strcmp('a','ab');
輸出-1
select strcmp('abc','ab');
輸出1
總結
以上是生活随笔為你收集整理的mysql字符串连接,重复等字符串函数总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jenkins异常 -- active
- 下一篇: oracle中检索结果汉字首字母排序详解