SQL 中的转换失败
Conversion Failure in SQL
虽然 运行 下面的查询我遇到了以下错误:
Conversion failed when converting the varchar value '0.' to data type
int.
我知道它看到列值“0”。作为数字,但不能转换为 INT 数据类型。我想问一下如何解决这个问题,因为我只想在列中显示整数。
查询如下:
SELECT
wh.Id,
CASE WHEN ISNUMERIC(wh.Uid AS INT) = 1
THEN CAST(UID AS INT)
ELSE 0
END AS [Cardholder ID]
FROM database.dbo.table wh
部分栏目内容示例如下:
112
222225
55546
4478
0.)
0.
C/Windows/system.ini
Text here
而不是isnumeric()
,我倾向于使用try_convert()
。
也就是说,try_convert(money,...)
似乎更宽容一些。
例子
Declare @users Table ([UID] varchar(50)) Insert Into @users Values
('112')
,('222225')
,('55546')
,('4478')
,('0.)')
,('0.')
,('C/Windows/system.ini')
,('Text here')
,('4.')
Select *
,NewValue = try_convert(int,coalesce(try_convert(money,UID),0))
from @users
结果
UID NewValue
112 112
222225 222225
55546 55546
4478 4478
0.) 0
0. 0
C/Windows/system.ini 0
Text here 0
4. 4
虽然 运行 下面的查询我遇到了以下错误:
Conversion failed when converting the varchar value '0.' to data type int.
我知道它看到列值“0”。作为数字,但不能转换为 INT 数据类型。我想问一下如何解决这个问题,因为我只想在列中显示整数。
查询如下:
SELECT
wh.Id,
CASE WHEN ISNUMERIC(wh.Uid AS INT) = 1
THEN CAST(UID AS INT)
ELSE 0
END AS [Cardholder ID]
FROM database.dbo.table wh
部分栏目内容示例如下:
112
222225
55546
4478
0.)
0.
C/Windows/system.ini
Text here
而不是isnumeric()
,我倾向于使用try_convert()
。
也就是说,try_convert(money,...)
似乎更宽容一些。
例子
Declare @users Table ([UID] varchar(50)) Insert Into @users Values
('112')
,('222225')
,('55546')
,('4478')
,('0.)')
,('0.')
,('C/Windows/system.ini')
,('Text here')
,('4.')
Select *
,NewValue = try_convert(int,coalesce(try_convert(money,UID),0))
from @users
结果
UID NewValue
112 112
222225 222225
55546 55546
4478 4478
0.) 0
0. 0
C/Windows/system.ini 0
Text here 0
4. 4