我有4列,我需要concat使用,作为分隔符我尝试了以下查询
Select concat(concat(concat(concat(name,','),age,','),surname,','),city,',') from student
但出现错误,因为为concat指定的参数数目无效有谁能帮我解决问题吗
yzckvree1#
请尝试:
select coalesce(name,'')||','||coalesce(age,'')||','||coalesce(surname,'')||','||coalesce(city,'')||',' from student
运算符||是连接运算符,通常更可读。只有当列可以包含NULL时才需要coalesce(),因为如果任何一列确实包含NULL,那么整个表达式的结果将是NULL,所以使用coalesce()函数将它们替换为空字符串或您选择的其他字符。要使用concat函数(该函数有两个参数),可以使用下面的,如果任何列可为空,则仍需要使用coalesce()保护该函数:
||
select concat(concat(concat(concat(concat(concat( concat(name,','), age),','),surname),','),city),',') from student;
如果列的数据类型为CHAR()-它是固定宽度的,则任何前导或尾随空格都将出现在输出中。如果不需要这些空格,则必须使用TRIM()函数。如果您有更好的表列设计,即使用VARCHAR作为可以包含可变长度数据的列的数据类型,因为在这种情况下,数据库引擎会自动删除尾部空格。
1条答案
按热度按时间yzckvree1#
请尝试:
运算符
||
是连接运算符,通常更可读。只有当列可以包含NULL时才需要coalesce(),因为如果任何一列确实包含NULL,那么整个表达式的结果将是NULL,所以使用coalesce()函数将它们替换为空字符串或您选择的其他字符。
要使用concat函数(该函数有两个参数),可以使用下面的,如果任何列可为空,则仍需要使用coalesce()保护该函数:
如果列的数据类型为CHAR()-它是固定宽度的,则任何前导或尾随空格都将出现在输出中。如果不需要这些空格,则必须使用TRIM()函数。如果您有更好的表列设计,即使用VARCHAR作为可以包含可变长度数据的列的数据类型,因为在这种情况下,数据库引擎会自动删除尾部空格。