【问题标题】:String concatenation in SQLITE with NA values?SQLITE中带有NA值的字符串连接?
【发布时间】:2020-03-23 08:28:28
【问题描述】:

目前在 SQLite 工作并有下表

id subject_1  subject_2 
1  maths       algebra
2  english     <NA>
3  french      speech

我想创建一个新列 - 这是主题_1 和主题_2 列的连接,但是我的主题_2 列中有值 - 有没有一种连接列的方法,以便我可以得到下表

id new_col
1  maths algebra
2  english
3  french speech

现在我尝试了以下两种方法 - 两种方法都不起作用;使用 || 连接并合并(只取第一个非空值)

select
id 
subejct_1 | ''| subject_2 as new_col 
from my_table 

coalesce 不是一个选项,因为我希望两列的所有字符串输出一起。

有没有办法将之前的 NA 值转换为空字符串?

【问题讨论】:

  • “NA”是实际的字符串“NA”,还是null
  • 它是null 以其他语言查看时的格式使其

标签: sql sqlite


【解决方案1】:

如果您确定 subject_1 不包含空值,则仅将 coalesce 用于 subject_2

select id,
  subject_1 || COALESCE(' ' || subject_2, '') new_col
from tablename 

请参阅demo
结果:

| id  | new_col       |
| --- | ------------- |
| 1   | maths algebra |
| 2   | english       |
| 3   | french speech |

【讨论】:

  • 是的 - subject_1 不包含空值 - 非常感谢您
【解决方案2】:

不幸的是,至少据我所知,SQLite 没有concat_ws 函数。这有点笨拙,但您可以使用 case 表达式来模拟它:

SELECT id,
       CASE WHEN subject_2 IS NULL THEN subject_1 
                                   ELSE subject_1 || ' ' || subject_2
       END
FROM   my_table

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 2021-08-29
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多