所以我有一个SSIS包,它使用表达式将某些文本替换为",然后将其加载到数据库中。
如果我在SSMS中的表中进行选择查询,例如;
SELECT * FROM xxx
WHERE Email IS NULL OR Email = ''
它没有返回任何结果,尽管我可以直观地看到有带有空白电子邮件字段的记录。
我也尝试过;
SELECT * FROM xxx
WHERE (LEN(ISNULL(Email,'')) = 0);
我的SSIS表达式;
LOWER(REPLACE([Email],"Â",""))
有什么解决方案吗?
EDIT-如下所述,我将字段强制转换为varbinary,它们的值为0xA0。
编辑2-对我有效的答案是哪里的电子邮件喜欢"%"+CHAR(160(+"%">
你能试着使用吗
WHERE EMail LIKE '%' + CHAR(160) + '%'
160是";不间断空间";。
尝试:
SELECT * FROM xxx
WHERE Email IS NULL OR Email NOT LIKE REPLICATE('[A-Za-z0-9@.-_]', LEN(Email))
您可以使用len
函数,如果为零,则电子邮件将包含一个空字符串,如果为空,则电子邮件为空
这将查找电子邮件为空、为null或具有不可打印字符的任何行
where len(email) = 0 or len(email) is null