SQL Server 2008 を使用しています
varEnteredValue
datatypeという列がありますsql_Variant
。
次の選択ステートメントを実行すると、何も得られません
SELECT * FROM tblname WHERE varEnteredValue = 1
この列には値が 1 の値が多数あることに注意してください
質問
この問題を解決するにはどうすればよいですか? データ型を変換する必要がありますか?
SQL Server 2008 を使用しています
varEnteredValue
datatypeという列がありますsql_Variant
。
次の選択ステートメントを実行すると、何も得られません
SELECT * FROM tblname WHERE varEnteredValue = 1
この列には値が 1 の値が多数あることに注意してください
質問
この問題を解決するにはどうすればよいですか? データ型を変換する必要がありますか?
ここには 2 つの問題があります。
SQL_VARIANT
値を からに変換する必要がありますINT
。INT
SQL Server が最初にフィルター処理を行うか、最初に変換を試みるかを予測するのが難しい場合があるためです。値が数値かどうかを最初にテストする必要があります。そのためには、明示的に文字列に変換する必要があります。両方の問題を回避する例を次に示します。
WHERE CASE WHEN ISNUMERIC(CONVERT(VARCHAR(32), varEnteredValue)) = 1
THEN CONVERT(FLOAT, varEnteredValue) ELSE 0 END = 1;
なぜあなたは使用していSQL_VARIANT
ますか?