【发布时间】:2018-04-11 18:25:07
【问题描述】:
我在RAPP 01 之类的列中有文本。 RAPP 02 到 RAPP 45 和 RAPP 99。我在 WHERE 子句的 IN 语句中手动包含了所有这些值,但由于数据集庞大,它会减慢查询速度。我试过WHERE SUBSTR(REMARK_TXT,1,7) LIKE 'RIPA [01-45,99]',它没有返回任何数据。你能帮忙吗?
谢谢!
【问题讨论】:
-
错字? RIPA RAPP
-
Teradata 是否理解
LIKE中的括号?我认为这是 T-SQL 唯一的事情。 -
根据您的实际数据,您可以使用
SUBSTR(REMARK_TXT,1,7) BETWEEN 'RAPP 01' AND 'RAPP 45' OR SUBSTR(REMARK_TXT,1,7) = 'RAPP 99'或WHERE REMARK_TXT LIKE 'RIPA %' AND CAST(SUBSTR(REMARK_TXT,6,2) AS INT) IN (1-45,99) -
@ThorstenKettner:不,它只支持标准 SQL
%_,但你可以应用正则表达式函数。 -
谢谢! SUBSTR(REMARK_TXT,1,7) BETWEEN 'RAPP 01' AND 'RAPP 45' OR SUBSTR(REMARK_TXT,1,7) = 'RAPP 99' 工作!