我有一个名为[DBO]的nvarchar字段,其中包含数字年龄(如32)或其他nvarchar值lke Unknown或12/10/2013
我想要实现的是将[DBO]转换为int(如果它是数字)。这是我目前的代码,但显然不起作用。
SELECT * FROM [PeopleTable] WHERE CAST([DBO] AS INT)=32
它总是给我一个错误,因为[DBO]的值不是int。我试图使用“CASE”但我无法看到如何在我的命令中实现它。
答案 0 :(得分:1)
您应该能够提取所有仅限数字的记录,然后进行演员表。
SELECT *
FROM [PeopleTable] P
WHERE CAST(P.[DBO] AS INT) = 32
AND ISNUMERIC(P.[DBO]) = 1
答案 1 :(得分:0)
答案 2 :(得分:0)
试试这个:
SELECT * FROM [PeopleTable] P
WHERE ISNUMERIC(P.[DBO]) = 1) AND CAST(P.[DBO] AS INT) = 32
答案 3 :(得分:0)
我会用
select
convert(int,[dbo])
from @t
where not ([dbo] like '%[^0-9]%')
如果您使用ISNUMERIC
,如果您的数据中包含小数值,则会收到错误。
答案 4 :(得分:0)
SELECT * FROM
(
SELECT *,
CAST((CASE isnumeric(ColumnName)
WHEN 0 THEN NULL
ELSE CAST(ColumnName AS DECIMAL(10, 2))
END) AS INT) AS ColumnName1
FROM tablename
) T
WHERE ColumnName1 = yourNumber