我在RAPP 01
这样的列中有文字。 RAPP 02
高达RAPP 45
和RAPP 99
。我在WHERE子句中的IN语句中手动包含了所有这些值,但它会将查询速度设置为巨大的数据集。我试过了WHERE SUBSTR(REMARK_TXT,1,7) LIKE 'RIPA [01-45,99]'
并没有返回任何数据。你能帮忙吗?
谢谢!
答案 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
并将通配符置于条件的开头,会产生更大的性能问题。