【问题标题】:db2 replace fails with SQLCODE=-171db2 替换失败,SQLCODE=-171
【发布时间】:2017-08-02 20:04:18
【问题描述】:

我们有一个包含以下内容的 select 语句:

SELECT REPLACE(REPLACE(EMAIL, x'00', ''), '\n', '') AS EMAIL FROM tabname 

由于 EMAIL 为空,因此 SQLCODE=-171 失败。 仅当 EMAIL 有内容时,替换 EMAIL 的最有效方法是什么? EMAIL 被定义为 varchar。实际的选择是拉多列并对大多数列进行替换。

【问题讨论】:

  • 你确定替换是问题吗?我对空字符串或 NULL 值的替换函数没有问题。

标签: sql db2


【解决方案1】:

如果你这样做呢?

SELECT REPLACE(REPLACE(ifnull(EMAIL, ''), x'00', ''), '\n', '') AS EMAIL FROM tabname 

【讨论】:

  • 真的很接近。我将其更改为nullif。当我使用 ifnull 时,我收到 Code: -171, SQL State: 42815] THE DATA TYPE, LENGTH, OR VALUE OF ARGUMENT 1 OF SYSIBM.REPLACE IS INVALID. 。当我使用 null 时,如果替换有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
相关资源
最近更新 更多