85516


SQL ServerでNullのレコードを参照して値を取得しようとしてもエラーが起きません。  
そういうものなのでしょうか？よろしくお願いいたします。

例  
【前提】

[code]

    tableA(id, name)
    tableB(id, name)
    
[/code]

※tableAにはあって、tableBにはないidのレコードがあります

【実行するSQL】（外部結合）

[code]

    select tableB.name from tableA left join tableB on tableA.id = tableB.id;
    
[/code]

【結果】  
tableBにないレコードのnameはnullで取得します。  
→直観的に例外が発生するのかと思っていました。

(追記）  
皆さんご回答ありがとうございます！  
列がないのではなく列の各フィールドがnullになっているという点に気づいて、  
自分の疑問は解消されました！  
そしてnullを取得すること自体は問題がなく、クライアント側によってnullで何かしたら例外が発生するということ理解しました。


CC BY-SA 4.0
2022-01-05T08:01:40.860
85497
2022-01-11T05:02:21.543
2022-01-11T05:02:21.543
50765
50765
question
sql sql-server nullpointerexception
SQL Server から Null のレコードを取得時しても Null 参照エラーが起きないのはなぜ？


SQL Serverに限らず、そういうものです。

SQLのJOINは結合された表を作る処理と理解するといいかと思います。  
ここで「表」といっているのは、行と列を持つものです。  
LEFT JOINの場合、tableBに無い行に関しては、tableB用に用意された列が全てnullになっています。

「列がない」のではなく「列の値がnull」であるといった感じです。

ですので、tableB.nameという名前で指定して取得した列の値がnullですので、tableB.nameが返すのは例外ではなくnullとなるわけです。


CC BY-SA 4.0
2022-01-06T07:50:12.463
85516
2022-01-06T07:50:12.463
8647
85497
answer


null の値をとってくるのは問題はありません。正常に実行できます  
nullの変数からなにかをしようとすると、例外が出ます


CC BY-SA 4.0
2022-01-07T02:02:16.657
85537
2022-01-07T02:02:16.657
27481
85497
answer