Разработана странная БД, которая не имеет ключей и позволяет вводить числа в varchar, который также допускает нулевые значения - PullRequest
0 голосов
/ 11 октября 2019

Как я могу гарантировать, что TSQL не будет лаять на меня с этими возвращаемыми значениями:

'1.00000000' или NULL или '' или 'some value'

Когда я преобразую в int

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Вот ответ, который я нашел, который работал для меня ... TSQL - Привести строку к целому числу или вернуть значение по умолчанию Я не на 2012 или выше из-за клиента ...

Не доверяйте мне, хотя :) Я был хорош только в поиске ответа, который работал для меня ...

Хотя я изменил его с возврата нуля на возврат нуля, так как глупый varchar должен бытьстолбец int со значением по умолчанию, равным нулю:)

0 голосов
/ 11 октября 2019

Если вы используете SQL Server 2012 или более позднюю версию, вы можете использовать функцию TRY_CONVERT, например,

WITH yourTable AS (
    SELECT 123 AS intVal UNION ALL
    SELECT '123' UNION ALL
    SELECT NULL
)

SELECT
    intVal,
    CASE WHEN TRY_CONVERT(int, intVal) IS NOT NULL THEN 'yes' ELSE 'no' END AS can_parse
FROM yourTable;

Демо

Функция TRY_CONVERT вернет NULL в этом случае, если она не может преобразовать входные данные в целое число. Таким образом, это безопасный способ проверки ваших данных перед попыткой формального приведения или преобразования.

...