将SQL查询转换为正则表达式

时间:2018-03-07 15:48:26

标签: sql regex oracle

你能否告诉我是否正确地将SQL查询转换为正则表达式?

1) SQL:

CLASSIFICATION_CODE not like '24%'

REGEX:

CLASSIFICATION_CODE <> '([^2]|2[^4])'

2) SQL:

TYPE_CODE NOT LIKE 'DKRI%' OR TYPE_CODE  NOT LIKE 'KRI%' OR TYPE_CODE  <> '355' OR TYPE_CODE  <> '303'

REGEX:

TYPE_CODE <> '([^DK3]|D[^K]|DK[^R]|DKR[^I]|K[^R]|KR[^I]|3[^50]|30[^3]|35[^5]' 

提前致谢,

一个。

1 个答案:

答案 0 :(得分:1)

没有。正则表达式匹配任何位置,但like始终是完整字符串。所以你需要锚定正则表达式:

regexp_like(CLASSIFICATION_CODE, '^([^2]|2[^4])'

虽然,我会把它写成:

not regexp_like(CLASSIFICATION_CODE, '^24')

你的第二个更简单:

CLASSIFICATION_CODE IS NOT NULL

或:

regexp_like(CLASSIFICATION_CODE, '.')

我可以推测你真的打算AND在条件之间,但是OR,任何字符串都会匹配。