Teradata 中的 LIKE 通配符搜索
LIKE Wild Card Search in Teradata
我在 RAPP 01
这样的列中有文本。 RAPP 02
到 RAPP 45
和 RAPP 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
并将通配符放在条件的开头,这会有更大的性能问题。
我在 RAPP 01
这样的列中有文本。 RAPP 02
到 RAPP 45
和 RAPP 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
并将通配符放在条件的开头,这会有更大的性能问题。