Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 就像Teradata中的通配符搜索_Sql_Wildcard_Teradata - Fatal编程技术网

Sql 就像Teradata中的通配符搜索

Sql 就像Teradata中的通配符搜索,sql,wildcard,teradata,Sql,Wildcard,Teradata,我在一列中有文本,如RAPP 01RAPP 02直到RAPP 45和RAPP 99。我在WHERE子句中的in语句中手动包含了所有这些值,但由于数据集庞大,这会减慢查询速度。我尝试了WHERE SUBSTR(备注1,7),比如'RIPA[01-45,99],但它没有返回任何数据。你能帮忙吗? 谢谢 您可以在此处使用REGEXP功能: WHERE REGEXP_SIMILAR(REMARK_TXT, '^RAPP [0-9]{2}$') = 1; 该正则表达式与一个字符串相匹配,该字符串以RA

我在一列中有文本,如
RAPP 01
RAPP 02
直到
RAPP 45
RAPP 99
。我在WHERE子句中的in语句中手动包含了所有这些值,但由于数据集庞大,这会减慢查询速度。我尝试了
WHERE SUBSTR(备注1,7),比如'RIPA[01-45,99]
,但它没有返回任何数据。你能帮忙吗?
谢谢

您可以在此处使用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结尾。您可以使用以下命令:

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

打字错误?RIPA rappodes Teradata是否理解
中的括号,如
?我认为这只是一个T-SQL语句。根据您的实际数据,您可以在“RAPP 01”和“RAPP 45”之间使用
SUBSTR(备注,1,7),或者在(1-45,99)中使用SUBSTR(备注,1,7)=“RAPP 99”
其中备注,如“RIPA%”和CAST(SUBSTR(备注,6,2)如INT)
@ThorstenKettner:No,它只支持标准的SQL
%\uu
,但您可以应用正则表达式函数。谢谢!“RAPP 01”和“RAPP 45”之间的SUBSTR(备注1,7)或SUBSTR(备注1,7)=“RAPP 99”有效!谢谢成功了。我只想看看RAPP 01-45和RAPP 99。有没有办法把它集成到你提到的REGEXP中?我已经更新了答案来处理数字范围。