这个问题让我头疼不已。我一直在犯错误。我遵循了其他问题的解决方案,但没有一个对我有效。我真的希望有人能在这里纠正我。
我只想从视图中获取数据
SELECT Table_view.Information
FROM Table_View
但我一直收到这个错误
将varchar值,“”转换为int数据类型时转换失败
我尝试了以下方法:
SELECT Table_View.Information
FROM Table_View
WHERE Table_View.Information NOT LIKE '%,%'
SELECT Table_View.Information
CASE WHEN CAST(Table_View.Information AS INT) = 1 THEN 'space'
ELSE CONVERT(VARCHAR, Table_View.Information) END
FROM Table_View
SELECT CAST (REPLACE(REPLACE(Table_View.Information, ' ,', ' '),'/', '') AS VARCHAR)
FROM Table_View
SELECT CONVERT(VARCHAR, REPLACE(REPLACE(Table_View.Information, ' ,', ' '),'/', ''))
FROM Table_View
SELECT Table_View.Information
CASE
WHEN Table_View.Information NOT LIKE '%,%' THEN CAST(Table_View.Information AS VARCHAR)
END
FROM Table_View
以上都没有帮助我解决这个问题。有什么建议吗?我试过转换,转换,大小写,替换。
2条答案
按热度按时间qoefvg9y1#
显然,如果是2012年以上,则应该使用
try_convert()
或try_cast()
。如果转换失败,则返回NULL,而不是抛出错误。也就是说,转换(金钱,...)倾向于更宽容一点
示例
退货
nfs0ujit2#
上面的代码意味着Information是一个字符列,因为不可能将逗号转换为数字。
这里有一个错误,因为CAST没有提供一个返回值,这样它就可以与数字1进行比较,如果该值包含一个逗号,那么任何转换为int的尝试都会导致类型转换错误。
尝试使用
ISNUMERIC()
或TRY_CAST()
来代替CAST。