SQL替换上的数据类型不匹配

时间:2016-08-11 11:31:38

标签: sql ms-access

我有四个(相关)字段,DESCRPDescription1Description2DescriptionMatch

DESCRP应与Description1填充为18个字符+ Description2相同。这是在此过程中得到验证。

以下代码只要Description2 IS NOT NULL即可正常工作。

UPDATE tblParametersComp SET DescriptionMatch = "YES" 
WHERE (NOT (DESCRP IS NULL OR Description1 IS NULL))
AND
((DESCRP  = [Description1]+IIf(Len([Description1])<18,Space(18-Len([Description1])),"")+[Description2])

出于某种原因,如果Description2 IS NULL这不起作用,所以我试图添加这一行来解决这个问题(因为如果没有第二行,填充是无关紧要的:

OR Description2 IS NULL AND REPLACE(Description1," ","") = Replace(DESCRP," ",""))

但是,这会产生以下错误:

DB Error

这没有任何意义,因为据我所知,所有相关字段都属于Text数据类型。

DB Data

我尝试使用CSTR(Replace(...)) = CSTR(Replace(...))只是为了确定而且没有任何区别。

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:1)

在评论中讨论后,没有人发布确定答案,问题似乎不是处理NULL记录。

这是使用NZ函数处理的。

所以这条线变成了:

WHERE DESCRP = nz([Description1],"")+IIf(Len(nz([Description1],""))<18,Space(18-Len(nz([Description1],""))),"")+(nz(Description2,""));

这就像魅力一样!