【问题标题】:SQLite combine two columnsSQLite 合并两列
【发布时间】:2012-12-28 18:01:20
【问题描述】:

此查询返回包含操作系统信息的两个单独的列,因为数据是基于扫描工具自动写入数据库表的,我无法手动更改列。我正在尝试编写一个将两行合并为一的查询(使用 operating_system_version 行中的数据填充操作系统行中的空白。

我现在的查询如下:

SELECT device_type, operating_system, operating_system_version
FROM DEVICES
WHERE user_name like '|%front-%|'
OR user_name like '|%back-%|'
OR user_name like '|%ap-%|'
OR user_name like '|%me-%|'
OR user_name like '|%mg-%|'

然后它返回:

device_type    operating_system        operating_system_version


desktop         windows xp
desktop                                 windows 7 professional
desktop         windows xp              
desktop                                 windows 7 professional

我希望它返回如下内容:

device_type    OS


desktop         windows xp
desktop         windows 7 professional                        
desktop         windows xp              
desktop         windows 7 professional  

我试过添加 ||如下所示,但它没有返回任何数据:

SELECT device_type, operating_system||operating_system_version
FROM DEVICES
WHERE user_name like '|%front-%|'
OR user_name like '|%back-%|'
OR user_name like '|%ap-%|'
OR user_name like '|%me-%|'
OR user_name like '|%mg-%|'                       

【问题讨论】:

  • 这是 sqlite,ISNULL 不起作用。
  • 我链接的问题的接受答案不使用 ISNULL。请注意下面 DrM 的回答中使用了 COALESCE。
  • 对不起,我没有仔细阅读。

标签: sqlite concatenation


【解决方案1】:
SELECT device_type, coalesce(operating_system,operating_system_version) AS OS
FROM DEVICES
WHERE user_name like '|%front-%|'
OR user_name like '|%back-%|'
OR user_name like '|%ap-%|'
OR user_name like '|%me-%|'
OR user_name like '|%mg-%|'

这将选择操作系统,或者如果为 null,则选择 operating_system_version 并将其作为列名 OS 返回。

如果你想连接两个字段,试试

SELECT device_type, coalesce(operating_system,'') || coalese(operating_system_version,'') AS OS
FROM DEVICES
WHERE user_name like '|%front-%|'
OR user_name like '|%back-%|'
OR user_name like '|%ap-%|'
OR user_name like '|%me-%|'
OR user_name like '|%mg-%|'

【讨论】:

  • 像以前一样 ||意思是逻辑或this answer 也可能有用
猜你喜欢
  • 2011-01-01
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-20
  • 2014-08-01
  • 2019-01-09
  • 1970-01-01
相关资源
最近更新 更多