SQL ASP.NET - 如果是数字,则将nvarchar转换为int

时间:2013-10-15 17:20:53

标签: c# asp.net sql sql-server

我有一个名为[DBO]的nvarchar字段,其中包含数字年龄(如32)或其他nvarchar值lke Unknown或12/10/2013

我想要实现的是将[DBO]转换为int(如果它是数字)。这是我目前的代码,但显然不起作用。

SELECT * FROM [PeopleTable] WHERE CAST([DBO] AS INT)=32

它总是给我一个错误,因为[DBO]的值不是int。我试图使用“CASE”但我无法看到如何在我的命令中实现它。

5 个答案:

答案 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