我正在尝试使用regexp_like()
函数在Oracle SQL中找到以D或K开头并以2或3结尾的字符串。
REGEXP_LIKE(属性,'(^ D | ^ K)')显示
DL71
DR93
DW11
KL62
KT03
KV29
REGEXP_LIKE(属性,'(^ D | ^ K)*')显示
AT94
BV06
CD52
DL71
DR93
DW11
FD21
KL62
KT03
KV29
REGEXP_LIKE(属性,'*(^ 2 | ^ 3)')显示
CD52
DR93
KL62
KT03
REGEXP_LIKE(属性,'(^ D | ^ K)*(^ 2 | ^ 3)')显示
CD52
DR93
KL62
KT03
我应该如何纠正?
数据如下:
Attribute
AT94
BV06
CD52
DL71
DR93
DW11
FD21
KL62
KT03
KV29
答案 0 :(得分:2)
我认为您正在寻找:
WHERE REGEXP_LIKE(Attribute, '^[DK].*[23]$')
您正在寻找角色类。这些用方括号分隔。
正则表达式:
^
位于模式的开头,表示表达式以模式开头。[DK]
是一个与这些字符之一恰好匹配的字符类。.*
可以匹配任意数量的字符(可能会出现换行符)。[23]
是与这些字符之一完全匹配的字符类。$
位于模式末尾意味着表达式以这种模式结束-在这种情况下,2
或3
位于末尾。答案 1 :(得分:2)
您不需要正则表达式;您可以只使用LIKE
:
WHERE ( Attribute LIKE 'D%' OR Attribute LIKE 'K%' )
AND ( Attribute LIKE '%2' OR Attribute LIKE '%3' )