Db2 concat标量函数问题?

ngynwnxp  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(250)

我有4列,我需要concat使用,作为分隔符
我尝试了以下查询

Select concat(concat(concat(concat(name,','),age,','),surname,','),city,',') from student

但出现错误,因为为concat指定的参数数目无效
有谁能帮我解决问题吗

yzckvree

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作为可以包含可变长度数据的列的数据类型,因为在这种情况下,数据库引擎会自动删除尾部空格。

相关问题