Impala版本:5.12.2
我需要匹配包含\%的字符串,例如a \%b。在impala shell中,我使用以下sql进行测试:
我认为\和%都应该转义,所以我使用'\\\%'。我不知道第二个SQL为什么不起作用,有人可以解释吗?
顺便说一句,如果我需要匹配包含两个斜杠的字符串,例如a \ b \ c,我尝试了下面的sql:
选择“ a \\ b \\ c”,例如“%\\%\\%”;
,但结果为假: sql result
在这里,%用作通配符,因此我不会对其进行转义。谁能给一个正确的SQL?
谢谢您的建议。
答案 0 :(得分:0)
您列出的第一个结果与查询不匹配,应该为True。您的第二个查询是错误的,您需要避免出现这种\\\\
此查询应完成工作
select 'a\\b\\c' like '%\\\\%\\\\%';
无论如何,我建议您使用正则表达式
select regexp_like('a\\b\\c','(.*?)\\\\{1}(.*?)\\\\{1}(.*?)'); -- true
select regexp_like('a\\bc','(.*?)\\\\{1}(.*?)\\\\{1}(.*?)'); -- false
select regexp_like('a\\\\','(.*?)\\\\{1}(.*?)\\\\{1}(.*?)'); -- true
select regexp_like('\\\\','(.*?)\\\\{1}(.*?)\\\\{1}(.*?)'); -- true
select regexp_like('\\b\\c','(.*?)\\\\{1}(.*?)\\\\{1}(.*?)'); -- true
select regexp_like('ab\\','(.*?)\\\\{1}(.*?)\\\\{1}(.*?)'); -- false