sql开头和结尾

时间:2018-09-23 20:13:29

标签: sql regex oracle

我正在尝试使用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

2 个答案:

答案 0 :(得分:2)

我认为您正在寻找:

WHERE REGEXP_LIKE(Attribute, '^[DK].*[23]$')

您正在寻找角色类。这些用方括号分隔。

正则表达式:

  • ^位于模式的开头,表示表达式以模式开头。
  • [DK]是一个与这些字符之一恰好匹配的字符类。
  • .*可以匹配任意数量的字符(可能会出现换行符)。
  • [23]是与这些字符之一完全匹配的字符类。
  • $位于模式末尾意味着表达式以这种模式结束-在这种情况下,23位于末尾。

答案 1 :(得分:2)

您不需要正则表达式;您可以只使用LIKE

WHERE ( Attribute LIKE 'D%' OR Attribute LIKE 'K%' )
AND   ( Attribute LIKE '%2' OR Attribute LIKE '%3' )