Alicloud SQL-Hive, SQL для исключения только цифр и только алфавита и только одного китайского слова - PullRequest
2 голосов
/ 11 мая 2019

У меня есть столбец, как показано ниже

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

Я хотел бы получить вывод

**col1**
a888d
我是
19mon

Я пытался использовать приведенный ниже синтаксис, чтобы исключить только цифры и только алфавит, однако строки не выводились. И я не знаю, как исключить одно китайское слово, такое как «我» выше.

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

Есть идеи, как это решить? Спасибо!

Ответы [ 2 ]

1 голос
/ 11 мая 2019

Использование регулярного выражения:

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)

Возвращает:

col1    
a888d   
我是  
19mon   

Демо: http://demo.gethue.com/hue/editor?editor=324999

1 голос
/ 11 мая 2019

Вы можете попробовать что-то вроде:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...