首页 > 解决方案 > Db2 concat 标量函数问题?

问题描述

我有 4 列需要使用 , 作为分隔符连接

我试过下面的查询

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

但得到错误为 concat 指定的参数数量无效

谁能帮我出了什么问题

标签: databasedb2ibm-data-db2

解决方案


请尝试:

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


推荐阅读