Null
Null( ヌル, ナル ) は, gì もない, という ý vị で,プログラミング ngôn ngữなどコンピュータQuan hệ では, “Gì も kỳ さないも の” を biểu す の に sử われる. Cùng dạng の も の として,PascalにおけるNil( ニル ),PythonにおけるNone( ナン ),VB.NETにおけるNothing( ナッシング ) の ように, hắn の キーワード (Dư ước ngữ) やPhân biệt tửが sử われることもある.
ドイツ ngữ においてNullは số trị の0( ゼロ ) を ý vị し, phát âm は/nʊl/である. Một phương, tiếng Anh においてnullは/nʌl/と phát âm される[1].ドイツ ngữ においても, số trị の 0と khác nhau するために, bổn ký sự の ý vị のNullは tiếng Anh phong に/nʌl/と phát âm される trường hợp がある[2][3].
Nhật Bản においては “ヌル” という phát âm が định しているが, tiếng Anh đọc みに gần い “ナル” という phát âm で hô ばれる trường hợp もある. Lệ えば,JISのJIS X 3005-1:2014 “データベース ngôn ngữ SQL đệ 1 bộ: 枠 tổ (SQL/Framework)”(Nhật Bản sản nghiệp tiêu chuẩn điều tra sẽ,Kinh tế sản nghiệp tỉnh) の P4には “ナル trị (Null Value)”,JIS X 3010:2003 “プログラム ngôn ngữ C”(Nhật Bản sản nghiệp tiêu chuẩn điều tra sẽ,Kinh tế sản nghiệp tỉnh) の P4には “ナル văn tự (Null Character)” という ghi lại がある. こ の hắn にも chuyên môn thư[4]や quốc gia thí nghiệm[5]でも thấy られる.
プログラミング ngôn ngữ などにおいて,null
やnil
といったキーワード (Dư ước ngữ) あるいは phân biệt tử (Định sốDanh ) など の ý vị がどういったも の かは ngôn ngữ による. Trường hợp によっては cùng じ ngôn ngữ であっても処 lý hệ の thật trang[Muốn xuất xứ]や ngôn ngữ バージョンごとに vi うことさえある.ポインタやTham chiếuの ある ngôn ngữ では,ヌルポインタまたはヌル tham chiếu などと hô ばれる gì も chỉ さない đặc biệt なポインタや tham chiếu であることもあるし,Pythonの ようにオブジェクト の ひとつであることもある[Chú 釈 1].Cổ điển なLISPの ようにChân lý trịの ngụy ( の đại biểu ) や khôngリスト“()
”を kiêm ねたも の ( それらと cùng じも の ) だったりすることもある.
Ngữ nguyên
[Biên tập]こ の tiết の xuất xứ は,Wikipedia: Tin lại できる tình báo nguyênに hợp trí していないおそれがあります. |
ラテン ngữで “Vô”を ý vị するnullus[1]に ngọn nguồn する[6].nil もラテン ngữ のnihilの đoản súc hình に ngọn nguồn する[7].
Tiếng Anh ではnullはコンピュータに hạn らず sử われ, しばしばzeroまたはemptyと trao đổi khả năng である. Lệ えば,null matrixはzero matrix(Linh hàng ngũ),null setはempty set(Không tập hợp) と cùng nghĩa である. ただし,empty matrixすなわちKhông hàng ngũは hành số または liệt số の thiếu なくとも một phương が0であるような hàng ngũ を chỉ し, linh hàng ngũ とは đừng の khái niệm である. また,null stringはempty string(Văn chương rỗng tuếch tự liệt) と cùng coi されることもあれば[8],ヌル tham chiếu を ý vị することもある[9].Giống nhau なプログラミング ngôn ngữ において, ポインタ変 số や tham chiếu 変 số が vô hiệu trị nullを chỉ している trạng thái と, trường さ0 の có hiệu な văn chương rỗng tuếch tự liệt や không リストなどを chỉ している trạng thái は minh xác に khác nhau される.
ヌルポインタ
[Biên tập]ポインタ の trị が vô hiệu であることを kỳ す.C ngôn ngữでは vô hiệu ポインタを biểu hiện するため の đặc biệt な định số trị ( ヌルポインタ định số ) として, thật trang định nghĩa ( 処 lý hệ định nghĩa ) のNULL
マクロが dụng ý されている[10].C の quy cách ではNULLポインタ の bên trong số trị は0とは quy định されていないが, 0をポインタ hình にキャストするとヌルポインタになることは quy định されている の で, đại biểu な thật trang では dưới の ようになっている.
#define NULL ((void*)0)
またC ngôn ngữ から đẻ ra したC++では, C ngôn ngữ から dẫn き継いだNULL
マクロが chuẩn hoá されており, こちらも thật trang định nghĩa となっている[11].ただし, Cとは vi って phiếm dùng ポインタ hìnhvoid*
から hắn の hình へ の ポインタに ám mặc 変 đổi することを cấm したため, C++03 quy cách までは dưới の ように chỉnh định số 0に triển khai される thật trang が giống nhau であった.
#define NULL 0
しかし, これは cơ bản số nguyên hìnhint
の 0とHình システムの thượng では cùng じになるため, しばしばオーバーロード の hô び gian vi いが sinh じることとなった. これを giải tiêu するためC++11Quy cách では chuyên dùng のstd::nullptr_t
Hình を cầm つリテラルを biểu すnullptr
キーワードが dẫn vào された[12].C++11 lấy hàng は,NULL
マクロはnullptr
に triển khai される thật trang もありえる.
なお, JIS X 3010:2003やJIS X 3014:2003 の văn mặt では, phiên 訳 nguyên であるISO/IEC 9899:1999やISO/IEC 14882:2003 の văn mặt で sử われているnull pointerの đối 訳として “Không ポインタ” と vật lưu niệm されているが, giống nhau にはヌルポインタと hô ばれること の ほうが nhiều い.
ヌル tham chiếu
[Biên tập]JavaやC#に đại biểu されるように, C++よりも sau phát の ngôn ngữ ではnullを lúc ban đầu から chuyên dùng cấu văn として dẫn vào した thí dụ が nhiều い.
Javaには cấu văn thượng ポインタは tồn tại せず, đại わりにガベージコレクションによる tự động メモリ quản lý の đối tượng となる “Tham chiếu hình” の インスタンスを chỉ すため の “Tham chiếu” が dùng いられる. Vô hiệu な tham chiếu を biểu す định số にはnull
キーワードが sử dụng される.
C#では, ガベージコレクションによる quản lý đối tượng となる tham chiếu hình, ポインタ[13],および trị hình をラップするジェネリックHình として định nghĩa されているNullable hình(System.Nullable<T>
Cấu tạo thể[14]) の vô hiệu trị を biểu す định số として, giống nhaunull
キーワードが sử dụng される.
そ の hắn の ヌル
[Biên tập]PythonではNone
という danh trước で, そ の trị は tổ み込みオブジェクトである. バージョン2.4からNone
には đại nhập できなくなった.
Rubyではnil
という dư ước ngữ[15]で, ý vị は tổ み込みオブジェクト (NilClass
の duy nhất の インスタンス[16]) である.
VB.NETではNothing
というキーワードで, tùy ý の データ hình の đã định trị を biểu す[17].
LISPではNIL
で, どれでも cùng じようなも の だが thật thể の kỹ càng tỉ mỉ は dạng 々で,carやcdrをとるとそれぞれでまたnilが phản ってくる thật trang もあればエラーになる thật trang もある ( bình thường はnilかどうかをまずテストして, carやcdrしないようにする ).
null hình
[Biên tập]Cấu văn thượng, nullは nhiều く の ngôn ngữ で đặc biệt なnullリテラルという tráp いだが, リテラル の ため の hình “null hình” ( またはNull hình, NULL hình とも ) が quy định される ngôn ngữ が tồn tại する. null hình の trị はnull の みが hứa される.
プログラミング ngôn ngữ の ngữ pháp thượng null hình が tồn tại するケースでは, giống nhau な hình cùng dạng にnull hình を dùng いることが ra tới るが, null hình を tráp えない ngôn ngữ も tồn tại する.
Lệ えばJavaでは “null hình” はあるが, ユーザーコードで lợi dụng することはできない. Ngôn ngữ sĩ dạng では, nullリテラルはnull hình であり, null hình には danh trước がなく, null hình の 変 số tuyên ngôn やnull hình へ の キャストをすることは không có khả năng である, という tráp いとなっている. Trở lên より, null hình は bên trong に tồn tại するが, cấu văn など の thượng でそれを tráp うことができず, そ の trị を biểu すリテラル の みが tồn tại する[18].
ヌル văn tự
[Biên tập]ヌル văn tự liệt
[Biên tập]nullデバイス
[Biên tập]nullデバイスは, tồn tại しない hư cấu のデバイスを biểu す. nullデバイスに xuất lực すると, thật tế はどこにも xuất lực されず廃 bỏ される.
UNIXやLinuxでは/dev/null,MS-DOSやMS WindowsではNULで biểu される.
データベース の NULL
[Biên tập]こ の tiết にはMột mình nghiên cứuが hàm まれているおそれがあります. |
データベースの NULLは, lan が không lan であることを kỳ す. これはNgười が đọc む dùngのBiểu( ひょう ) のNAにあたり, C ngôn ngữ の NULLよりはDi động số lẻTính toán のNaN( phi số ) に gần い.
Cụ thể にはNULLには, không biết ・ không rõ (Unknown) の trường hợp と áp dụng không thể ・ phi tồn tại (Not Applicable, Inapplicable) の trường hợp がある. Lệ えば, danh trước がNULL の trường hợp, không biết の NULLは “Danh trước はあるが phân からない” ということを, áp dụng không thể の NULLは “Danh trước が tồn tại しない” ( lệ えば,Độc thânGiả のPhối ngẫu giảの danh trước ) ことを kỳ す. これはエドガー・F・コッドによる phân loại だが, bỉ はさらに kỹ càng tỉ mỉ な phân loại をしている.
なおそれらに đối し, danh trước lan がVăn chương rỗng tuếch tự liệtの trường hợp は, ( trước đó の lấy り quyết めがなければ ) danh trước はあり, biết っていて, lan に thư かれている thông り “” であることを kỳ す. Không biết や áp dụng không thể の ために, văn chương rỗng tuếch tự liệt, văn tự liệt 'UNKNOWN', 0, -1, 9999 năm ngày 31 tháng 12, chưa sử dụng の コードなど riêng の ありえない trị をNgoại lệ trịとして sử うことがしばしばあるが, それらは thật tế の trị であるとして処 lý されてしまう nguy 険がある.
NULLはNULL trị ( あるいは không trị ) と hô ばれることもあるが, コッドによると trị ではない ( đặc thù な trị や ngoại lệ な trị ではない ). Trị ではない の でHìnhもない.Số nguyên hìnhの liệt にあるNULLも văn tự liệt hình の liệt にあるNULLも cùng じNULLであり, NULL số nguyên ・NULL văn tự liệt など の khác nhau はない. Bên trong にはNULLは, ( NaNやヌルポインタ の ような ) riêng の ビット liệt ではなく, trị とは người khác の “NULLかどうか” を biểu すメモリ lĩnh vực で quản lý されていることが nhiều い.
SQL の NULL
[Biên tập]NULL を hàm む tính toán の kết quả
[Biên tập]NULLを hàm む tính toán の nhiều くは kết quả がNULLとなる. Lệ えば
NULL+1
NULL/0
NOTNULL
NULLANDTRUE
LENGTH(NULL)
はいずれもNULLである ( 0で cắt っても0 trừ tínhは phát sinh しない ). これはDi động số lẻTính toán でNaNを hàm む thức の kết quả がNaNになる の と tựa た quy định である. こ の quy định によりNULLを hứa dung する tính toán は phiền tạp になりやすくなることから, データーベース・ベンダーによる拡 trương が hành われている trường hợp がある. こ の vấn đề は,WHERE câuでNULLでありうる liệt を chẩn bệnh しようとしたとき, đặc にDELETEやUPDATEで bi thảm な kết quả を hô ぶことがある. Lảng tránh phương pháp は, NULLが lẫn vào する khả năng tính を đầy đủ に kiểm thảo し, IS NULL tính toán tử を駆 sử して thức を thận trọng に tổ み lập てる bên ngoài にない.
ただし thiếu なからず trường hợp に, NULLを hàm む tính toán で kết quả がNULL bên ngoài になる. こ の ためNULLは vô chế hạn には vân bá しない. ただししばしば, NULL の lạc んだ tính toán のThật trangは không hoàn toàn で,処 lý hệ sống nhờ vào nhauが nhiều い.
Tương đối・IN thuật ngữ など nói lý lẽ trị を phản すべき trường hợp では, NULLを hàm む kết quả は UNKNOWN となる. UNKNOWN は, trị ではないNULL ( あるいは “Không rõ Unknown の NULL” ) とは dị なり TRUE ( thật ) ・FALSE ( ngụy ) に cũng ぶĐệ 3 の nói lý lẽ trịである. Lệ えば
NULL=NULL
NULL<>NULL
NULL=1
NULL<>1
NULL<1
NULLIN(1,2,3)
NULLIN(1,2,NULL)
などはいずれもUNKNOWNになる. ただし, UNKNOWN の tráp いにもNULLに tựa た khó しさがある.
Nói lý lẽ thức でNULLとならない trường hợp がある.
NULLANDFALSE
NULLORTRUE
はそれぞれFALSE, TRUEである ( NULL AND TRUE, NULL OR FALSE がNULLになる の と の vi いに chú ý ).
Oracleは văn chương rỗng tuếch tự liệt とNULLを khác nhau しないため, NULL あるいは văn chương rỗng tuếch tự liệt を hàm む tính toán で phi tiêu chuẩn な kết quả となることがある. Lệ えば, văn tự liệt と NULL を liên kết すると vốn dĩ は NULL になるが, Oracleでは văn tự liệt の trị を変えない ( ただし NULL cùng sĩ の liên kết は NULL になる ).
'A'||NULL-- IS NULL, ただし Oracle では = 'A'
NULL||NULL-- IS NULL
NULLを tráp うため の công phu
[Biên tập]テーブル の các liệt には, NULLを bảo trì できないと chỉ định することができる. Lệ えば, toàn て の hành で tất ず dị なる trị が hàm まれなければならないと chỉ định されている liệt であっても, số nhiều の hành がNULLを bảo trì できてしまう. そこで, こ の liệt にNULLを bảo trì できないと chỉ định すればこ の vấn đề が lảng tránh できる.
ソートでは, NULLはいかなる trị よりも tiểu さいとして tráp われる ( ただしOracleは nghịch にいかなる trị よりも đại きいとして tráp われるが, オプションで変 càng できる ). しかし nói lý lẽ trị で の ソートが thật trang されていれば, dưới の ように IS (NOT) NULL を đệ 1 の ソートキーに sử ってNULLを trước または sau に変 càng できる.
ORDERBYcolISNOTNULL,col-- NULLは lúc ban đầu
ORDERBYcolISNULL,col-- NULLは cuối cùng
また,CASE thứcやCOALESCE quan số ( あるいはOracleならNVL quan số も nhưng ) を sử って, NULLに tùy ý の trị を cắt り đương ててソートすることができる. Dưới の câu はいずれも, colがNULLならば0を cắt り đương ててソートする.
ORDERBYCASEWHENcolISNULLTHEN0ELSEcolEND
ORDERBYCOALESCE(col,0)
ORDERBYNVL(col,0)-- Oracle の み
Chú thích
[Biên tập]Chú 釈
[Biên tập]- ^Chứng 拠として lệ えば
None.__str__()
の ように tham chiếu できる.
Xuất xứ
[Biên tập]- ^abThật tế の phát âm はHow To Pronounce nullを tham chiếu の こと.
- ^“Wikipedia Deutsch - Nullwert”.2019 năm ngày 15 tháng 9Duyệt lãm.
- ^“StackExchange - German Language - “null” (zero) vs. “NULL””.2019 năm ngày 15 tháng 9Duyệt lãm.
- ^Cクイックリファレンス đệ nhị bản P57ほか Peter Prinz,Tony Crawford hắc xuyên lợi minh 訳 đảo mẫn bác kỹ thuật giam tu オライリー・ジャパン phát hành
- ^Lệ えば, bình thành 28 niên độKỹ thuật sĩĐệ 1 thứ thí nghiệm chuyên môn khoa tình báo công học bộ môn[1]の hỏi III-22
- ^“null adjective - Definition, pictures, pronunciation and usage notes”.Oxford University Press.2016 năm ngày 2 tháng 6Duyệt lãm.
- ^“nil noun - Definition, pictures, pronunciation and usage notes”.Oxford University Press.2016 năm ngày 2 tháng 6Duyệt lãm.
- ^Văn chương rỗng tuếch tự liệt ( ヌル văn tự liệt ) とは - ý vị をわかりやすく - IT dùng từ từ điển e-Words
- ^21.2 Validating Null and Empty Strings - Java Platform, Enterprise Edition: The Java EE Tutorial (Release 7)
- ^NULL - cppreference(C)
- ^NULL - cppreference(C++)
- ^nullptr - cpprefjp C++ Nhật Bản ngữ リファレンス
- ^アンセーフ コード, データへ の ポインター, および quan số ポインター - C# reference | Microsoft Learn
- ^Nullable<T> Struct (System) | Microsoft Learn
- ^Câu chữ cấu tạo (Ruby 3.3 リファレンスマニュアル)
- ^class NilClass (Ruby 3.3 リファレンスマニュアル)
- ^Nothing キーワード - Visual Basic | Microsoft Learn
- ^The Java® Language Specification Java SE 8 Edition