我们在哈纳(Hana)中使用LIKE_REGEXPR查找具有无效字符的记录。例如,我在Address2中的值是
JALAN*# CHANGKAT
*
不在我的允许列表上,因此我的查询应显示记录。但是它没有按预期工作。
代码:
select *
from contact PRD
WHERE adress = 'Home' AND
(prd.Address2 is null or
PRD.Address2 LIKE_REGEXPR '[^[:alnum:][:space:]_#&-/.,():{}_\!;$'']');
但是它没有显示JALAN*# CHANGKAT
。查询出了什么问题?
答案 0 :(得分:1)
您已包含字符“。”。在您的RegEx中-通常会匹配任何字符。您应该在RegEx中转义任何“特殊”字符。
我建议您在RegEx测试器(在线上有很多可用的测试器)中测试正则表达式,以查看其是否满足您的要求。自己检查结果,但我希望您需要:
NOT LIKE_REGEXPR '^[a-zA-Z0-9\s\t_#&\-\/\.,\(\):\{\}_\\!;]+$'
这将查找与正则表达式不匹配的条目,该正则表达式将整个值(用^和$括起来)与列表中的一个或多个字符匹配。如果您有最小长度,也可以包含该长度,例如,可以使用至少8个字符:
NOT LIKE_REGEXPR '^[a-zA-Z0-9\s\t_#&\-\/\.,\(\):\{\}_\\!;]{8,}$'