我收到错误
将数据类型nvarchar转换为float
时出错
在我的存储过程的这一部分:
SELECT
CAST(RTRIM(Value) AS FLOAT)
FROM
table_1
WHERE
ISNUMERIC(RTRIM(Value)) = 1
AND RTRIM(Value) NOT LIKE '%[^0-9.]%'
我试图追踪导致这种情况的价值,但是无法这样做,现在程序成功运行,因此我无法追踪有问题的价值格式。
如果有人可以建议一种方式,我想知道我们所拥有的两项检查可以通过哪种价值。
答案 0 :(得分:0)
如果你有SQL Server 2012或更新版本,你可以使用TRY_CONVERT
代替ISNUMERIC
SELECT TRY_CONVERT(FLOAT, RTRIM(Value))
FROM table_1
WHERE RTRIM(Value) NOT LIKE '%[^0-9.]%'
在您的情况下,您应该为WHERE
条款添加其他条件(我能够提出两个):
SELECT
CAST(RTRIM(Value) AS FLOAT)
FROM
table_1
WHERE
ISNUMERIC(RTRIM(Value)) = 1
AND RTRIM(Value) NOT LIKE '%[^0-9.]%'
AND RTRIM(Value) != '.'
AND RTRIM(Value) NOT LIKE '%.%.%'
答案 1 :(得分:0)
使用TRY_CONVERT()
代替
SELECT CONVERT(DECIMAL(10, 0), RTRIM(Value)) as Col
FROM table_1
WHERE TRY_CONVERT((DECIMAL(10, 0), Value) IS NOT NULL;
--WHERE ISNUMERIC(RTRIM(Value)) = 1 AND RTRIM(Value) NOT LIKE '%[^0-9.]%'