2

クエリの例を次に示します。

DECLARE @table table (loc varchar(10))

INSERT INTO @table VALUES
('134a'), ('123'), ('abc'), ('124')

SELECT * 
FROM (
    SELECT * FROM @table WHERE ISNUMERIC(loc) = 1
) as a
WHERE CAST(loc as INT) BETWEEN 100 AND 200

いくつかのvarchar値があり、クエリの派生テーブルで使用する数値に制限している場合ISNUMERIC、なぜ変換エラーが発生するのですか?:

varchar値「134a」をデータ型intに変換するときに変換に失敗しました。

これを回避する方法はありますか?

4

1 に答える 1

5

WHERE句が最初に実行されます。試す:

DECLARE @table table (loc varchar(10)) 

INSERT INTO @table VALUES 
('134a'), ('123'), ('abc'), ('124') 

SELECT *  
FROM ( 
    SELECT * FROM @table
) as a 
WHERE ISNUMERIC(loc) = 1 and CAST(loc as INT) BETWEEN 100 AND 200 
于 2012-02-07T03:49:59.170 に答える