Как разделить числовой и текст в SQL, когда весь столбец хранится как текст? - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть столбец, который включает как числовые, так и текстовые данные.Потому что число представляет одну группу, а текст представляет другую группу.Тем не менее, столбец хранится в виде текста в SQL.Можно ли как-нибудь разделить их на две группы на основе этого столбца?Кстати, я использую хранилище данных снежинок.

enter image description here

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Самый простой способ - использовать TRY_TO_NUMERIC (), которая возвращает числовое значение, если оно конвертируемо, и NULL в противном случае.Так, например:

create table xx(s string);
insert into xx values('hello_there'), ('1234'), ('look_out'), ('452');

select s, -- original column
       try_to_numeric(s) snum,  -- numeric version of the column
       case when snum IS NULL then s else NULL end sstr -- non-numeric string
from xx;

Here are the results

0 голосов
/ 28 февраля 2019

Вы можете использовать регулярные выражения.Например, чтобы сначала поставить числовые значения:

select t.*
from t
order by (case when column1 rlike '^[0-9]+$' then 1 else 2 end)
...