以下表为例:
1、CONCAT函数
(1)功能
将多个字符串连接成一个字符串;
(2)语法
CONCAT(str1,str2,…)
(3)示例
语句:
SELECT
CONCAT(id, query_condition, hotel_id, try_times)
FROM
test_warehouse_db.query_task;
结果:
(4)注意事项
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null
2、CONCAT_WS函数
(1)功能
concat_ws即concat with separator。和concat()一样,用于将多个字符串连接成一个字符串,但是可以一次性指定分隔符
(2)语法
CONCAT_WS(separator,str1,str2,...)
(3)示例
语句:
SELECT
CONCAT_WS('$$',
id,
query_condition,
hotel_id,
try_times) AS info
FROM
test_warehouse_db.query_task;
结果:
(4)注意事项
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则该参数为null,不影响其他参数的拼接;
3、GROUP_CONCAT函数
(1)功能
用于将多个字符串连接成一个字符串
(2)语法
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
(3)示例
语句1:
SELECT
GROUP_CONCAT(DISTINCT hotel_id, '@@')
FROM
test_warehouse_db.query_task
WHERE
id > 1070
ORDER BY id DESC;
300003521@@,300001798@@,300003508@@
语句2:
SELECT
type,
COUNT(id) count,
GROUP_CONCAT(DISTINCT hotel_id SEPARATOR '@') hotel_id,
GROUP_CONCAT(DISTINCT agency_id, '@') agency_id
FROM
test_warehouse_db.query_task
WHERE
id > 1070
GROUP BY type;
结果:
语句3:
SELECT
GROUP_CONCAT(DISTINCT hotel_id ORDER BY id DESC SEPARATOR '@') hotel_id
FROM
test_warehouse_db.query_task
WHERE
id > 1070;
结果:
300003508@300001798@300003521
(4)注意事项
a、通过使用distinct可以排除重复值;
b、如果希望对结果中的值进行排序,可以使用order by子句;
c、separator是一个字符串值,缺省为一个逗号;