Как разделить числовой и текст в SQL, когда весь столбец хранится как текст?

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

введите описание изображения здесь

2 ответа

Решение

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

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

Самый простой способ - использовать 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;

Другие вопросы по тегам