oracle-regexp\喜欢不给出期望的结果

oogrdqng  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(346)

有一个字符串列-col1,包含不同长度的单词,用空格隔开,这也可以包含特殊的字符。在推导下面的逻辑时,得到不同的结果。
逻辑:如果col1以字母表开始,以字母表结束,并且不包含任何特殊字符(可以在两者之间包含空格),则flag为1,否则flag为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;

但结果是错误的。

xvw2m8pv

xvw2m8pv1#

这符合你的需要吗?

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

regex描述了一个字符串,该字符串以字母字符开头,后跟0到n个字母字符或空格,并以字母字符结尾。
db小提琴演示:

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

相关问题