Teradata 中的 LIKE 通配符搜索

LIKE Wild Card Search in Teradata

我在 RAPP 01 这样的列中有文本。 RAPP 02RAPP 45RAPP 99。我在 WHERE 子句的 IN 语句中手动包含了所有这些值,但由于数据集很大,它会减慢查询速度。我试过 WHERE SUBSTR(REMARK_TXT,1,7) LIKE 'RIPA [01-45,99]' 但没有 return 任何数据。你能帮忙吗? 谢谢!

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

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

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


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

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

这是说一个以 RAPP 开头然后以从 0 到 4 开头的两位数字或数字 99

结尾的字符串

您可以使用以下内容:

where column like ('RAPP %')

这会 return 以字符串 RAPP 和空格开头的任何内容。注意“%”符号,这将是您的通配符。 小心使用 like,尤其是 not like 并将通配符放在条件的开头,这会有更大的性能问题。