T-SQL で nvarchar を int にキャストし、変換が失敗した場合にデフォルト値または NULL を返す方法はありますか?
ベストアンサー1
はい :)。これを試してみてください:
DECLARE @text AS NVARCHAR(10)
SET @text = '100'
SELECT CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END
-- returns 100
SET @text = 'XXX'
SELECT CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END
-- returns NULL
ISNUMERIC()
いくつかの問題点が指摘されているフェドル・ハイドゥ。
$
(通貨である)、,
または.
(両方とも区切り文字である)、+
などの文字列に対して true を返します-
。