返回包括NULL的所有值

Far*_*iba 8 sql database sql-server sql-server-2008

我在SQL Server 2008中有两个表,通过执行JOIN我想获取所有值,但是我只获取记录存在的值,即使我需要具有NULL记录的字段.

这是一个关于如何tableA看起来的例子

|IPAddress  |DNSRecord|
|192.168.1.1|Test     |
|192.168.0.1|Test1    |
Run Code Online (Sandbox Code Playgroud)

tableB 存储以下记录

|NetworkAddress|SerialNo |
|192.168.1.1   |1Z5A789DS|
|192.168.0.1   |NULL     |
Run Code Online (Sandbox Code Playgroud)

我返回我需要的字段的查询如下

SELECT 
    t1.IPAddress,
    t1.DNSRecord,
    t2.SerialNo,
    t2.IPAddress
FROM tableA t1
JOIN tableB t2 ON t1.IPAddress = t2.NetworkAddress
WHERE
   IPAddress LIKE '%' +@IPAddress + '%'
   AND SerialNo LIKE '%' +@SerialNo +'%'
Run Code Online (Sandbox Code Playgroud)

此查询的问题是我得到以下结果

|IPAddress  |DNSRecord|SerialNo |
|192.168.1.1|Test     |1Z5A789DS|
Run Code Online (Sandbox Code Playgroud)

我希望得到以下结果

|IPAddress  |DNSRecord|SerialNo |
|192.168.1.1|Test     |1Z5A789DS|
|192.168.0.1|Test1    |NULL     |
Run Code Online (Sandbox Code Playgroud)

bAN*_*bAN 11

只需为SerialNo的情况添加条件为NULL.根据您的实际情况,此案例将被拒绝选择

SELECT t1.IPAddress,
t1.DNSRecord,
t2.SerialNo,
t2.IPAddress
FROM tableA t1
JOIN tableB t2 ON t1.IPAddress = t2.NetworkAddress
WHERE
IPAddress LIKE '%' +@IPAddress + '%'
AND ( SerialNo LIKE '%' +@SerialNo +'%' OR SerialNo is NULL)
Run Code Online (Sandbox Code Playgroud)