database - Db2 concat 标量函数问题?
问题描述
我有 4 列需要使用 , 作为分隔符连接
我试过下面的查询
Select concat(concat(concat(concat(name,','),age,','),surname,','),city,',') from student
但得到错误为 concat 指定的参数数量无效
谁能帮我出了什么问题
解决方案
请尝试:
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 作为可以具有可变长度数据的列的数据类型,因为在这种情况下,数据库引擎会自动删除尾随空格。
推荐阅读
- ios - 添加按钮不要在 tableView 上添加新行
- python - 导入 Tensorflow 时面临的问题
- scala - org.apache.spark.SparkException:作业因阶段失败而中止:任务不可序列化
- mysql - 调整 Amazon RDS 存储的大小
- ruby-on-rails - Rails 动态/级联选择下拉列表
- javascript - 如何在下面的 readFile 代码中使用 Promise.all?
- node.js - 如何使用nodejs和mongoose在服务器中存储和验证二维码
- c# - 不包含 '' 的定义和扩展方法
- docker - Docker预定义的容器IP或堆栈内的名称?
- ios - 如何在 iOS 上使用 Facebook 登录 Firebase 以获取多个添加的应用程序 Firebase 项目