6

SQL Server はどこで暗黙的な変換を行い、どのような規則に従いますか? IE 等値演算子の左側を右側に変換するのはいつですか?

フーバー
id int null ではない
数量 int が null ではない
数量テスト バイトが null ではない
日付 varchar(20) が null ではない
dateTest 日時
SELECT id
FROM Foobar
WHERE quantity > '3'

SELECT id
FROM foobar
WHERE quantityTest > 3

Select id
FROM foobar
WHERE date = 20120101
4

2 に答える 2

9

これは、 DataType Precedenceの後のリストです

あなたの例では:

WHERE quantity > '3'

'3' は int にキャストされ、数量が一致します

WHERE quantityTest > 3

キャスト不要

WHERE date = 20120101

数値として20120101が日付にキャストされていますが、これは大きすぎます。例えば

select cast(20120101 as datetime)

これは

WHERE date = '20120101'

文字列としての日付をキャストできる場所。

CAST および CONVERT の参照の 3 分の 1 を暗黙の変換セクションに移動すると、許可されている暗黙の変換の表があります。許可されているからといって、(20120101 -> datetime) のように機能するとは限りません。

于 2012-11-08T21:20:58.820 に答える
6

MSDN には、SQL Server システム提供のデータ型で許可されているすべての明示的および暗黙的なデータ型変換を示すグラフがあります(以下も参照)。また、許可されていない変換などについても説明します。

説明します

-Explicit Conversions
-Implicit Conversions
-Conversions not allowed
...

データ型変換表 sql

于 2012-11-08T21:45:10.317 に答える