0

[DBO] という名前の nvarchar フィールドがあり、年齢の数値 (32 など) またはその他の nvarchar 値 (Unknown または 12/10/2013 など) が含まれています。

私が達成しようとしているのは、数値の場合は [DBO] を int に変換することです。これは私が現在持っているコードですが、明らかに機能していません。

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

[DBO] の値が int ではないというエラーが常に表示されます。「CASE」を使用しようとしましたが、コマンドでそれを実装する方法がわかりません。

4

5 に答える 5

1

数値のみのすべてのレコードをプルしてからキャストできるはずです。

SELECT * 
FROM [PeopleTable] P
WHERE CAST(P.[DBO] AS INT) = 32
AND ISNUMERIC(P.[DBO]) = 1
于 2013-10-15T17:26:41.630 に答える
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
于 2013-10-15T17:33:53.410 に答える
0

私は使うだろう

select 
    convert(int,[dbo])
from @t
where not ([dbo] like '%[^0-9]%')

を使用するISNUMERICと、データに 10 進数値があるとエラーが発生します。

于 2013-10-15T17:29:05.437 に答える