8

この質問の後:「SQL: ColumnName が意味する NULL とは」 SQL サーバーがこのクエリの列に対してどのデータ型を選択するかについて興味を持ちました。

SELECT NULL as aColumn

だから私はこのテストを実行しました:

select * from (select null as aaa) resulta
UNION ALL
select 6.54

2 つの行を生成します。

aaa
---------------------------------------
NULL
6.54

これは次のとおりです。

select * from (select null as aaa) resulta
UNION ALL
select 'ab'

SQL Server 2000 では、次のように叫びました。

aaa
-----------
NULL
Msg 245, Level 16, State 1, Line 5
Syntax error converting the varchar value 'ab' to a column of data type int.

そしてSQL Server 2008ではこれを与えました:

aaa
----
NULL
ab

では、SQL Server がすべて null の列に選択するデータ型について何か推測はありますか?

4

2 に答える 2

6

SQL Server は、明示的に定義された最初のデータ型を取得します。それ以外の場合は、暗黙的にデータを保持する型を選択します。

あなたの例では、入力できる最初の値は小数点に基づく数値です。したがって、テーブルはそのように定義されています。テキストを挿入しようとすると、変換できません。

リンクを読んで、互換性のあるデータ型をよく理解してください。その端の近くに良いチャートがあります。

http://msdn.microsoft.com/en-us/library/ms187928.aspx

于 2013-06-28T17:56:03.413 に答える
3

SQL Server 2008 では、これを使用して一時テーブルを作成し、新しく作成したテーブルのスキーマをクエリします。

select null as col1
into #test

exec tempdb..sp_help '#test'

結果は、列が int であることを示しました。

于 2013-06-28T17:46:52.133 に答える