我仍然是编写SQL查询的新手。 我试图找到具有特定模式匹配的所有行,这些行是constant_string_1的组合,后跟任何整数组合,后跟另一个constant_string_2。 所以对于我来说,我试图找到匹配的所有行:
我试过了:
select * from cust where cust_string ilike 'Roger_[0-9]_Maryland'
但是该查询不会生成0结果。我也试过使用[:digit:]和\ d但是两者都没有用。不确定我做错了什么。任何帮助表示赞赏。
由于
答案 0 :(得分:0)
您只需使用"%"即可完成此操作。我喜欢可能会导致问题,所以你可以使用"喜欢"将您的列转换为小写以匹配所有情况。
select * from cust where lower(cust_string) like 'roger%maryland';
答案 1 :(得分:0)
以下工作。我最终使用了regexp_instr,但是我的查询没有给出结果的是多位数匹配。
select * from cust where regexp_instr(cust_string, '^(Roger_)[0-9]{1,10}__Maryland$') > 0'
这做了两件事。一个它实现了上面的结果集,即Roger_188_Maryland等。但它也删除了任何多次出现的模式,因此对于ex,它消除了像Roger_188_Roger_211_Maryland这样的多重匹配。谢谢大家的帮助。