如何在使用LIKE时处理空字段值

时间:2016-08-24 03:26:20

标签: mysql sql database

表数据:

enter image description here

我有这个sql脚本:

SELECT
    ei.objid
FROM entityindividual ei 
INNER JOIN entity e 
    ON ei.objid = e.objid
LEFT JOIN entity_address ea 
    ON ei.objid = ea.parentid
WHERE ei.gender = 'M'
AND ISNULL(ea.barangay_name) LIKE '%'

如果您运行此脚本,则会显示 6条记录,但如果不使用ISNULL(ea.barangay_name),则只会显示 1条记录

但请考虑这种情况:

SELECT
    ei.objid
FROM entityindividual ei 
INNER JOIN entity e 
    ON ei.objid = e.objid
LEFT JOIN entity_address ea 
    ON ei.objid = ea.parentid
WHERE ei.gender = 'M'
AND ISNULL(ea.barangay_name) LIKE '%BUENAVISTA%'

运行上述脚本时,问题 无记录会显示。的为什么?如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

尝试使用coalesce代替isnull

http://www.w3resource.com/mysql/comparision-functions-and-operators/coalesce-function.php

SELECT
    ei.objid
FROM entityindividual ei 
INNER JOIN entity e 
    ON ei.objid = e.objid
LEFT JOIN entity_address ea 
    ON ei.objid = ea.parentid
WHERE ei.gender = 'M'
AND coalesce(ea.barangay_name,'') LIKE '%BUENAVISTA%'