приведите строку к int, если уместно t-sql - PullRequest
0 голосов
/ 08 мая 2018

Я использую t-sql на Microsoft Azure. У меня есть столбец с именем size, тип nvarchar. Он может указывать размер как число (46), как символ ('S', 'M', 'L' ..) и также содержит нули. Я хочу добавить столбец, который будет иметь числовой тип данных - он покажет мне номер для значений, которые являются числами, и ноль для остальных.

Следующий запрос делает то, что мне нужно:

select name, size, iif(size like '[0-9][0-9]', cast(size as int), null) as numSize
from product;

Мне было интересно, каким другим способом я могу добиться того же. Есть ли какая-нибудь другая функция, которая может мне помочь?

Спасибо

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Вы можете просто использовать инструкцию кейса:

select name, size,
 CASE ISNUMERIC(size)
   WHEN 1 THEN CAST(size AS INT)
   ELSE NULL 
 END as numSize
from product
0 голосов
/ 08 мая 2018

Функция, которую вы ищете - это try_parse (), которая преобразует вашу строку в целое число (в данном случае), в противном случае возвращает NULL, например,

select
      name
    , size
    , try_parse(size as int) as numSize
from
    product;

В дополнение к этому вы пометили это как tsqlt , который является (блестящим) модулем модульного тестирования для SQL Server. Я изменил его на TSL .

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