postgresql - 在 Postgres 中也将三列数据连接成一列,其中包含单列值
问题描述
谁能告诉我哪个命令用于将三列数据连接到 PostgreSQL 数据库中的一列?
例如,如果列是
begin | Month | Year
12 | 1 | 1988
13 | 3 |
14 | | 2000
| 5 | 2012
输出:
Result
12-1-1988
13-3-null
14-null-2000
null-5-2012
实际上,我已经连接了两列,但它只显示结果中的那些值,这些值在所有列中都不为空,但我想显示在单列中也不为空的值。
解决方案
如果您只是使用标准的连接函数,如concat()
or||
运算符,那么null
当任何元素为null
.
您可以使用concat_ws()
忽略null
值的函数。但是您期望它们会被显示。
因此,您需要将实际null
值转换为非空文本'null'
。这可以使用COALESCE()
函数来完成,该函数接受多个参数并返回第一个非空值。但是这里出现了问题,该'null'
字符串是text
与列 ( ) 不同的类型 ( int
)。所以你必须均衡类型,例如通过将int
值转换为text
之前。因此,最后您的查询可能如下所示:
SELECT
concat_ws('-',
COALESCE(begin::text, 'null'),
COALESCE(month::text, 'null'),
COALESCE(year::text, 'null')
)
FROM mytable
推荐阅读
- node.js - 如何测试使用带有 Jest 的 StaticQuery 的组件
- scala - Scala 宏能否在这种情况下生成方法和隐含?
- javascript - 调用回调 URL 时获取“令牌错误:错误请求”
- python - 无法为机器学习创建模型
- javascript - json 字段未使用 fetch 发送到服务器
- node.js - 如何解决 AWS 部署中的“Cannot Get /”错误?
- json - 无法在合理的时间内对该表达式进行类型检查 - ForEach SwiftUI
- drools - drools 中的单继承
- javascript - 如何更新 i18next 配置?
- python - 从 Power BI 的其他查询导入数据集