【问题标题】:coalesce on sample database not work在示例数据库上合并不起作用
【发布时间】:2017-04-10 13:28:03
【问题描述】:

这里我使用的是 DB2 的 SAMPLE 数据库。

我正在尝试使用合并来更改 EMPLOYEE 表的 MIDINIT 列中的空值,但在运行代码后仍然得到空值结果。

SELECT COALESCE (MIDINIT, 'XX') AS MIDINIT
FROM EMPLOYEE;

run result

【问题讨论】:

  • 您使用的是哪个 DBMS?
  • IBM Data Studio

标签: sql db2 ibm-data-studio


【解决方案1】:

你的错误是什么?

如果 MIDINIT 不是 char 或 varchar(例如整数),您的合并将整数值替换为 char 值并且系统 SQL 无法选择类型

如果 MIDINIT 不是 char 或 varchar 你应该是

SELECT COALESCE (cast(MIDINIT as varchar(200)), 'XX') AS MIDINIT
FROM EMPLOYEE;

或者如果 MIDINIT 是数字

SELECT COALESCE (MIDINIT, 0) AS MIDINIT
FROM EMPLOYEE;

您可以根据需要使用 ifnull 函数来替换 coalesce(如果 MIDINIT 是 char 或 varchar):

SELECT ifnull(MIDINIT, 'XX') AS MIDINIT
FROM EMPLOYEE;

【讨论】:

  • 其实没有报错,但是空值依然存在并且没有改成'XX'
  • 你在它的空值吗?它不是空白值吗?尝试:从你的表中选择 nullif(cast(yourcolumn as varchar(200)), '')
  • 尝试选择'#' ||trim(yourcolumn) || '#' from yourtable 如果结果是 ## 那么你的列不为空
  • 我不知道它是否为空,因为如果它是空值合并或该代码将解决它。
  • 我得到了##结果,所以我认为它不为空。
猜你喜欢
  • 2016-05-26
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多