阿里云sql配置单元,sql只排除数字和字母,只排除单个中文单词

ycggw6v2  于 2021-06-24  发布在  Hive
关注(0)|答案(2)|浏览(362)

我有下面这样一个专栏

  1. **col1**
  2. 1244
  3. a888d
  4. ahahd
  5. 我是
  6. 19mon

我想要的结果是

  1. **col1**
  2. a888d
  3. 我是
  4. 19mon

我试着用下面的语法来排除数字和字母表,但是没有字符串被打印出来。我不知道怎么排除一个中文单词,比如“我" 上面。

  1. SELECT col1 from abc
  2. where col1 like '%[^0-9.]%' AND col1 like '%[^a-zA-Z.]%'

有什么办法解决这个问题吗?谢谢您!

xwmevbvl

xwmevbvl1#

使用正则表达式:

  1. with your_data as (
  2. select stack(6,
  3. '1244',
  4. 'a888d',
  5. 'ahahd',
  6. '我',
  7. '我是',
  8. '19mon'
  9. ) as col1
  10. )
  11. select col1 from your_data
  12. where col1 not rlike ('^\\d+$') --not digits only
  13. and col1 not rlike ('^[a-zA-Z]+$') --not alpha only
  14. and length(col1) !=1; --not single char (digit and alpha filtered already)

退货:

  1. col1
  2. a888d
  3. 我是
  4. 19mon

演示:http://demo.gethue.com/hue/editor?editor=324999

展开查看全部
tvmytwxo

tvmytwxo2#

你可以尝试以下方法:

  1. SELECT *
  2. FROM abc
  3. WHERE LOWER(col1) != UPPER(col1) -- COLLATE Latin1_General_CS_AS SQL Server specific
  4. OR (LENGTH(col1) != 1 AND col1 like '%[^a-zA-Z.0-9]%');

db<>小提琴演示

相关问题