2010-12-28 11 views
0

私はtable1という名前のテーブルを作成しました。名前、ID、説明、および日付という4つの列があります。Null値ステートメント

私はIDと説明の値を持つTABLE1にレコードを挿入した名前はvarchar(50)nullで、IDのint型のヌル、説明VARCHAR(50)ヌル、日付日時ヌル

のようにそれらを作成しました。だから、今私のTABLE1は次のようになります。それらの

Name ID Description Date 

Null 1 First  Null 

一つは、テーブルにカラム名と日付ではなく、テキストのNullのNULL値を持つべきであるような方法を変更するために私に尋ねました。 TABLE1 FROM

SELECT * NAMEは、TABLE1 FROM

SELECT * NULL IS:私は誰もが私にこれらのselect文の違いを説明できることを意味したもの

の違いが何であるかを知りませんWHERE NAME = 'NULL'

SELECT * FROM TABLE1 WHERE NAME = ''

誰も私を説明できますか?

+2

上に読むべき? Nullが表示される理由は、null値を表す別の方法があることです。値がない場合は、実際の値はNULL値にする必要があります。 –

+0

DBAは、テーブルの値がテキストnullを表していることを教えてくれました。あなたはそれをnull値に変更できますか?はい、ラムハウンドnull値を表す方法を教えてください。 – Sam

+0

Sam、あなたは印象的ですこの質問と以前の質問に役立ちます。 DBAはタスクの横に何かを与えますか? –

答えて

2

に役立つかもしれない

を返されません正確に一つのスペース「」に等しいすべての行CREATE TABLEでは、NULLまたはNOT NULLここでvarchar(50) nullの制約で、NULLが許可されるかどうかを決定します。 NOT NULLはnoを意味します。

データを挿入したときに、どのステートメントを実行しましたか? (:おそらく、そのようなことではないヌル値)

INSERT TABLE1 VALUES (Null, 1, First, Null) 

又は

INSERT TABLE1 VALUES ('Null', 1, First, 'Null') 
  • 最初のものはNULLを挿入し、キーワードNULLを使用します。いかなる値は、NULLビットマップフィールド
  • 秒1は、文字列「ヌル」とN、長さU、L、L + 2つのバイトが
  • あなたがSELECT * FROM TABLE1を実行

保存されている文字が含まれている以外に保存されていませんクライアントツールはNULLを表示します。 、あなたが実際にNULLまたは文字列NULLを持っているかどうかをテストするのSELECT

--null symbols. No value stored 
SELECT * FROM TABLE1 WHERE NAME IS NULL 
--string null 
SELECT * FROM TABLE1 WHERE NAME = 'NULL' 
--empty string 
SELECT * FROM TABLE1 WHERE NAME = ' ' 

ノートについてこの

SELECT ISNULL(name, 'fish'), ISNULL(date, GETDATE()) FROM TABLE1 

を実行するには

:ヌルシンボル/値は空の文字列ではありません。それは価値がなく、比較しません。それ自体にさえ。

あなたのDBAに関しては、ISNULLで上記のコードが格納されているものを決定します。

編集:あなたはヌルシンボル/値を格納している場合は、あなたのDBAは正確にあなたを尋ねた「null bitmap

0

AFAICでは、NULL間に違いはありません。異なる列タイプがあります。しかし、列がテキストデータ型でNULLであれば、それはテキストNULLです。

NULLの代わりに空の文字列( "")について質問がありますが、使用している説明がそれを参照しているようではありません。

0

文字列 "Null"は文字列です。

NULLの値(またはNullまたはnull、これらの場合、SQLは大文字と小文字を区別しません)は、未知の値を示すために使用されます。もしそうなら、それは空の値のセットです。

http://www.w3schools.com/sql/sql_null_values.asp

0

NULLは、ソフトウェアでは、無価値の象徴です。値としてnullの文字列を使用して列を挿入すると仮定すると、ヌル定数を使用します。例えば

INSERT INTO table1 (Name,ID,Description,Date) VALUES (NULL,1,'First',NULL); 

NULLはSQLでは定数であり、文字列ではNULLではありません。

+3

キーワードは「一定」ではありません – gbn

+0

@gbn:技術的には正しいです。しかし、それは概念的に一定に保つことは変わらないことを考えると、IMHOはより簡単になります。 [編集した、間違ったマニュアルを参照しました] –

1

データはNULLを表します。テキスト 'Null'は、テキストを表示するクエリツールです。

1

これらのうちの1人が、名前と日付の列がテキストNullの代わりにNull値を持つようにテーブルを変更するように頼まれました。私はそれらの違いは何か分かりません。

NULLキーワードは任意の値の不在を示し - 値は不明です。

しかし、それは誰かが "NULL"、データタイプの提供(INTとDATETIMEはない)を書き出す手紙を保存するのを止めることはありません。このため、IS NULLのような演算子は、 "NULL"を綴じるテキストに対しては機能しません。逆の場合も同様です。... LIKE '%NULL%'を使用して文字列を検索すると、NULL値のレコードは返されません。

SQL ServerのNULLに関しては、列のデータ型は問題ありません。 UNION文では、あなたは適切なデータ型であることがNULLキャストする必要があります - NULLのデフォルトはINTです:列と出力について提供された情報に基づいて

SELECT CAST('2011-01-01 00:00:00' AS DATETIME) 
UNION 
SELECT CAST(NULL AS DATETIME) 

、DBAが求めているように見えます結果セットにNULLの値が見つかったときに、ディスプレイでSQL Serverへの接続に使用しているクライアントのテキストを変更します。私の最初の仕事の皿洗いのことを思い出すと、左利きへらを取得するように頼まれた...

0

SELECT * FROM TABLE1 WHERE NAME IS NULL

返し名前が戻り、すべての行

SELECT * FROM TABLE1 WHERE NAME = 'NULL'

NULLであるすべての行名前は文字列 'NULL'と等しく、ヌル値は返されません。

SELECT * FROM TABLE1 WHERE NAME = ' '

返し名は、NULL値がこの文を実行すると、それはときにnullを片付けるとするときにそのない

select 
*, 
case 
    WHEN name is null THEN 'Its Null alright' 
     ELSE 'It has a value' 
END 
FROM TABLE1 
+0

ここで、テキストがNULLでNullの値を持つこれらのうちから教えてください – Sam

+0

2番目の文字はリテラルテキストNULLの行を返します。最初のものはnull値のみを返します –