我试图在查询中构建一个不同的字符串,除非其中一个值为NULL,否则它将工作。我已经测试删除LOCATION_ADDR_LINE_2,并且查询会正常工作。当我不选择DISTINCT时,我发现LOCATION_ADDR_LINE_2值为NULL。我如何在SELECT DISTINCT中收集这些值,即使NULL?SELECT DISTINCT在不需要时省略NULL值
SELECT DISTINCT(LOCATION_ADDR_LINE_1 + ', ' + LOCATION_ADDR_LINE_2 + ', ' + LOCATION_CITY + ', ' + LOCATION_WORK_STATE) AS Addresses
FROM OracleReport
WHERE (LOCATION_ADDR_LINE_1 LIKE '%1135 Auto%' OR LOCATION_ADDR_LINE_1 LIKE '%199 Easy%')
返回:
地址 NULL
SELECT DISTINCT(LOCATION_ADDR_LINE_1 + ', ' + LOCATION_CITY + ', ' + LOCATION_WORK_STATE) AS Addresses
FROM [OperationReport].[dbo].[OracleReport]
WHERE (LOCATION_ADDR_LINE_1 LIKE '%1135 Auto%' OR LOCATION_ADDR_LINE_1 LIKE '%199 Easy%')
返回:
地址
1135自动...
189-199容易...
将coalesce(field,'')中的每个值包装为零以将其更改为长度为零的字符串。但是,如果这是Oracle可能无法正常工作。用+代替||来判断尽管coalesce应该可以正常工作。 – xQbert
对于Oracle,有NVL() –
这是针对从Oracle数据构建的SQL表的SQL查询。长话短说,它是更大机器的一部分,不需要直接查询Oracle。 –