喜欢Teradata中的Wild Card搜索

时间:2018-04-06 15:45:44

标签: sql wildcard teradata

我在RAPP 01这样的列中有文字。 RAPP 02高达RAPP 45RAPP 99。我在WHERE子句中的IN语句中手动包含了所有这些值,但它会将查询速度设置为巨大的数据集。我试过了WHERE SUBSTR(REMARK_TXT,1,7) LIKE 'RIPA [01-45,99]'并没有返回任何数据。你能帮忙吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

您可以在此处使用REGEXP功能:

 WHERE REGEXP_SIMILAR(REMARK_TXT, '^RAPP [0-9]{2}$') = 1;

该正则表达式匹配一个字符串,该字符串以RAPP开头,后跟一个空格,然后是2个数字和字符串的结尾。

更新以处理两个数字范围(01-49)和(99)。这不是正则表达式最好的做法,但它仍然可能:

 WHERE REGEXP_SIMILAR(REMARK_TXT, '^RAPP ([0-4][0-9]|99)$') = 1;

这是一个以RAPP开头的字符串,然后以两位数字结尾,以0到4或数字99开头

答案 1 :(得分:0)

您可以使用以下内容:

where column like ('RAPP %')

哪个会以字符串RAPP和空格开头返回任何内容。请注意“%”符号,这将是您的通配符。 小心使用like,尤其是not like并将通配符置于条件的开头,会产生更大的性能问题。