甲骨文-REGEXP_LIKE没有给出期望的结果

时间:2020-07-23 18:42:30

标签: sql regex oracle oracle10g case

具有一个字符串列-COL1,其中包含不同长度的单词,这些单词之间用空格隔开,并且还可以包含特殊字符。虽然在逻辑之下进行推导,但结果不同。

逻辑: 如果COL1以字母开头,以字母结尾并且不包含任何特殊字符(中间可以包含空格),则标志为1,否则标志为0。


COL1            FLAG
Abc gty xyz      1
ab/c bpl ?t      0
qwr .p           0
tiotio iop       1
TItio  io/       0
abc              1
abc     xy       1

尝试

SELECT CASE WHEN REGEXP_LIKE(COL1,'^[a-zA-Z]$') THEN '1' ELSE '0' END AS FLAG FROM TABLE1;

但结果错误。

1 个答案:

答案 0 :(得分:1)

这符合您的需求吗?

select 
    col1, 
    case when regexp_like(col1, '^[a-zA-Z][a-zA-Z ]*[a-zA-Z]$') 
        then 1 
        else 0 
    end as flag 
from table1

正则表达式描述的字符串以字母字符开头,后跟0到N个字母字符或空格,并以字母字符结尾。

Demo on DB Fiddle

COL1        | FLAG
:---------- | ---:
Abc gty xyz |    1
ab/c bpl ?t |    0
qwr .p      |    0
titio  iop  |    1
TItio  io/  |    0
abc         |    1
abc     xy  |    1