阿里云SQL-Hive,SQL只排除数字和字母和单个汉字

Alicloud SQL-Hive, SQL to exclude number only and alphabet only and single chinese word only

我有一个像下面这样的专栏

**col1**
1244
a888d
ahahd
我
我是
19mon

我想要的输出是

**col1**
a888d
我是
19mon

我试图使用下面的语法来排除数字和字母,但是没有打印出任何字符串。而且我不知道如何排除单个中文单词,如上面的“我”。

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

有什么解决办法吗?谢谢!

您可以尝试类似的方法:

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

db<>fiddle demo

使用正则表达式:

with your_data as (
select stack(6,
'1244',
'a888d',
'ahahd',
'我',
'我是',
'19mon'
) as col1
) 

select col1 from your_data
 where col1 not rlike ('^\d+$')      --not digits only
   and col1 not rlike ('^[a-zA-Z]+$') --not alpha only
   and length(col1) !=1;              --not single char (digit and alpha filtered already)

Returns:

col1    
a888d   
我是  
19mon