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

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

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

  1. COL1 FLAG
  2. Abc gty xyz 1
  3. ab/c bpl ?t 0
  4. qwr .p 0
  5. tiotio iop 1
  6. TItio io/ 0
  7. abc 1
  8. abc xy 1

试用

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

但结果是错误的。

xvw2m8pv

xvw2m8pv1#

这符合你的需要吗?

  1. select
  2. col1,
  3. case when regexp_like(col1, '^[a-zA-Z][a-zA-Z ]*[a-zA-Z]$')
  4. then 1
  5. else 0
  6. end as flag
  7. from table1

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

  1. COL1 | FLAG
  2. :---------- | ---:
  3. Abc gty xyz | 1
  4. ab/c bpl ?t | 0
  5. qwr .p | 0
  6. titio iop | 1
  7. TItio io/ | 0
  8. abc | 1
  9. abc xy | 1
展开查看全部

相关问题