我受到SQL Server的挑战。我有这个简单的查询
SELET *
FROM mytable
WHERE ISNUMERIC(propertyvalue) = 1
AND CONVERT(int, CONVERT(decimal(9, 0), ISNULL(propertyvalue, 0 ))) > 0
我试图将转换行从
CONVERT(decimal(9, 0), ISNULL(propertyvalue, 0))
到
CONVERT(decimal(9, 2), ISNULL(propertyvalue, 0))
或者
CAST(ISNULL(propertyvalue, 0) AS numeric)
我尝试的所有方法都无法正常工作。我不断收到这个错误
消息8114,级别16,状态5,第1
行将数据类型varchar转换为数值时出错。
关于如何解决此问题的任何想法?
已编辑
propertyvalue的类型为varchar(255)
,其数据如
2
1.5
2.1
String
1String 456
我相信您需要在尝试转换之前过滤掉字符串数据:
SELECT *
INTO #temp
FROM mytable
WHERE propertyvalue NOT LIKE '%[^0-9]%'
SELECT *
FROM #temp
WHERE CONVERT(INT, CONVERT(DECIMAL(9, 0), ISNULL(propertyvalue, 0))) > 0
DROP TABLE #temp
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句