Mysql contract处理字符串

作者
2024-06-21阅读 608

1、同一条记录中的查询字段做拼接,将多个字符串连接成一个字符串

用到的函数:CONCAT()

语法:CONCAT(参数1, 参数2, 参数3, ........... ,参数N)

例子:

select CONCAT("A",1);

select CONCAT('PO', "_", product_number);

缺点:如有任何一个参数为NULL ,则返回值为 NULL。

所以如果发现自己拼接出来的结果是NULL的话,可以首先确定一下里面的参数是否有为NULL的可能性。

对应方法:使用IFNULL()对参数进行判断处理。例如

select CONCAT('PO', "_", IFNULL(product_number, ''));

select CONCAT('PO', "_", IFNULL(receive_amount, 0));

或者是使用以下函数

2、指定分隔符,将同一条记录中的查询字段做拼接,将多个字符串连接成一个字符串

用到的函数:CONCAT_WS()

语法:CONCAT(分隔符, 参数1, 参数2, 参数3, ........... ,参数N)

例子:

select CONCAT_WS("-",1, "abc");

select CONCAT_WS("/", 'PO', "1111");

缺点:如有分隔符为NULL,则返回结果为NULL。

优点:参数1-N如果为空,会自动转换成空字符串,而不会变成NULL

3、多条数据的字段拼接成一个字符串,需要结合GROUP BY使用

用到的函数:GROUP_CONCAT()

语法:GROUP_CONCAT(参数1, 参数2, 参数3, ........... ,参数N)

例子:

SELECT
	GROUP_CONCAT(`name`, " ", CONVERT(quantity, DECIMAL(10, 0 )), "台") AS "remarks" 
FROM
	salesorder_detail 
GROUP BY
	id

缺点:跟CONCAT()函数类似,如有任何一个参数为NULL ,则返回值为 NULL。



全部评论