2017-08-02 106 views
0

我们有以下的select语句:DB2替换失败,SQLCODE = -171

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

这种失败,SQLCODE = -171,因为EMAIL是空的。 只有当EMAIL包含内容时,最有效的方式才能取代EMAIL? EMAIL被定义为一个varchar。实际选择是拉多个列,并在大多数情况下进行替换。

+0

您确定替换是问题吗?替换函数的空字符串或NULL值没有问题。 – Charles

回答

0

如果你这样做?

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

那真的很接近。我将它改为nullif。当我使用ifnull时,我收到'代码:-171,SQL状态:42815] SYSIBM.REPLACE的参数1的数据类型,长度或值是无效的。当我使用nullif替换工程。 – user3670332