我试图使用regexp_like()函数在 Oracle SQL 中查找以 D 或 K 开头并以 2 或 3 结尾的字符串。
REGEXP_LIKE(属性,'(^D|^K)')显示
DL71
DR93
DW11
KL62
KT03
KV29
Run Code Online (Sandbox Code Playgroud)
REGEXP_LIKE(属性,'(^D|^K)*')显示
AT94
BV06
CD52
DL71
DR93
DW11
FD21
KL62
KT03
KV29
Run Code Online (Sandbox Code Playgroud)
REGEXP_LIKE(属性,'*(^2|^3)')显示
CD52
DR93
KL62
KT03
Run Code Online (Sandbox Code Playgroud)
REGEXP_LIKE(属性,'(^D|^K)*(^2|^3)')显示
CD52
DR93
KL62
KT03
Run Code Online (Sandbox Code Playgroud)
我应该如何纠正呢?
数据如下:
Attribute
AT94
BV06
CD52
DL71
DR93
DW11
FD21
KL62
KT03
KV29
Run Code Online (Sandbox Code Playgroud)
我想您正在寻找:
WHERE REGEXP_LIKE(Attribute, '^[DK].*[23]$')
Run Code Online (Sandbox Code Playgroud)
您正在寻找字符类。它们由方括号分隔。
正则表达式:
^在模式的开头意味着表达式以模式开始。[DK]是与其中一个字符精确匹配的字符类。.*匹配任意数量的字符(换行符可能是一个问题)。[23]是与这些字符之一完全匹配的字符类。$在模式的末尾意味着表达式以此模式结束——在本例中,2或3在末尾。