1.背景
業務中、上司から下記の指示がありました。
上司「一部のカラムには空文字を入れるINSERT文を作成して。」
私(空文字ってどうやるんやろう?)
・・・ついつい方言が出てしまったので、備忘録としてまとめます。
2.環境
- windows10 バージョン21H2
- Microsoft SQLServer Management Studio 18.12.1
3.準備
今回はhoge_DBというテーブルを作成してみました。
idは自動採番、全カラムにNOT NULLをつけて必ず何かしら入れるように設定しています。
NOT NULL制約:NULL(無記入)ではいけない
(→必ずデータが入っていなければならない)
CREATE TABLE hoge_DB(
auto_id int NOT NULL IDENTITY(1,1), -- id(自動採番)
title nvarchar(100) NOT NULL, -- タイトル
text nvarchar(200) NOT NULL -- テキスト
);
4.入れてみた
今回は、titleとtextに空文字を挿入します。
通常だと、'String'
のようにシングルクォーテーションで囲んで挿入します。
シングルクォーテーションのみでやってみましょう・・・
挿入ができました。
INSERT INTO hoge_DB(title,text)VALUES('','');
--(1 行処理されました)
ちなみにダブルクォーテーションで挿入しようとするとエラーになります。
INSERT INTO hoge_DB(title,text)VALUES("","");
--オブジェクト名または列名がないか、空です。SELECT INTO ステートメントの場合は、各列に名前が付いていることを確認してください。その他のステートメントの場合は、空の別名を検索してください。"" または [] として定義された別名は許可されません。別名を有効な名前に変更してください。
Microsoft SQLServer Management Studioでも挿入ができていることを確認できました。
(空文字なのでわかりづらいですね)
5(おまけ).NULLと空文字の違い
NULLと空文字は別物です。
NULL:データが何もない
空文字:0文字の文字データ
6.参考
1.書籍:ミック, SQLゼロからはじめるデータベース操作, 翔泳社, 2016.
2.SQLにおけるダブルクォーテーションとシングルクォーテーションの使い方
3.null / ヌルとは
4.「NULL」と「空文字」の違い
7.最後に
NULLと空文字が曖昧だったので理解できました。
読んでいただき、ありがとうございました!