Rog*_*son 3 t-sql sql-server casting
如果输入数据损坏,有没有办法处理SQL强制转换?
假设我有一个数据类型列,NVarchar(10)并希望将此列转换为int.
我们还说有些nvarchar值已损坏,因此无法转换为int.
有没有办法默默地忽略这些,默认它们为0或某些这样的?
DECLARE @t TABLE (Numbers VARCHAR(20))
INSERT INTO @t
VALUES
('30a'),('30'),('100'),
('100a'),('200'),('200a')
SELECT CASE
WHEN ISNUMERIC(Numbers) = 1
THEN CAST(Numbers AS INT) ELSE NULL END AS Number
FROM @t
Run Code Online (Sandbox Code Playgroud)
ISNUMERIC函数返回1,当它是一个整数值时,您可以使用此函数.
结果
Number
NULL
30
100
NULL
200
NULL
Run Code Online (Sandbox Code Playgroud)
它将铸造 integer values to INT and ignore the values that cannot be cast to Int