コンテンツにスキップ

Null

Xuất xứ: フリー bách khoa sự điển 『ウィキペディア ( Wikipedia ) 』

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ệ えば,JISJIS 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ữ などにおいて,nullnilといったキーワード (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]

ラテン ngữで “”を ý 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 matrixzero matrix(Linh hàng ngũ),null setempty 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 stringempty 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_tHì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]

JavaC#に đạ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ỏ される.

UNIXLinuxでは/dev/null,MS-DOSMS WindowsではNULで biểu される.

データベース の NULL

[Biên tập]

データベースの NULLは, lan が không lan であることを kỳ す. これはNgười が đọc む dùngBiể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]
  1. ^Chứng 拠として lệ えばNone.__str__()の ように tham chiếu できる.

Xuất xứ

[Biên tập]
  1. ^abThật tế の phát âm はHow To Pronounce nullを tham chiếu の こと.
  2. ^Wikipedia Deutsch - Nullwert”.2019 năm ngày 15 tháng 9Duyệt lãm.
  3. ^StackExchange - German Language - “null” (zero) vs. “NULL””.2019 năm ngày 15 tháng 9Duyệt lãm.
  4. ^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
  5. ^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
  6. ^null adjective - Definition, pictures, pronunciation and usage notes”.Oxford University Press.2016 năm ngày 2 tháng 6Duyệt lãm.
  7. ^nil noun - Definition, pictures, pronunciation and usage notes”.Oxford University Press.2016 năm ngày 2 tháng 6Duyệt lãm.
  8. ^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
  9. ^21.2 Validating Null and Empty Strings - Java Platform, Enterprise Edition: The Java EE Tutorial (Release 7)
  10. ^NULL - cppreference(C)
  11. ^NULL - cppreference(C++)
  12. ^nullptr - cpprefjp C++ Nhật Bản ngữ リファレンス
  13. ^アンセーフ コード, データへ の ポインター, および quan số ポインター - C# reference | Microsoft Learn
  14. ^Nullable<T> Struct (System) | Microsoft Learn
  15. ^Câu chữ cấu tạo (Ruby 3.3 リファレンスマニュアル)
  16. ^class NilClass (Ruby 3.3 リファレンスマニュアル)
  17. ^Nothing キーワード - Visual Basic | Microsoft Learn
  18. ^The Java® Language Specification Java SE 8 Edition

Quan liền hạng mục

[Biên tập]