Mysql:如果记录中的字段为空,我希望存储过程返回N / A作为值

时间:2017-09-07 10:39:58

标签: mysql sql stored-procedures phpmyadmin

我在MySQL中有一个表,其中记录中的字段(默认值:无)没有任何值。

我正在使用存储过程从此表中选择值,而当此字段没有值时,我应该得到值N/A

我尝试了以下代码,但是我得到的字段没有任何价值。

SELECT md.coding_id,
    md.patient_id,
    md.implant_date,
    (case 
        when md.device_and_implant_description = ''
            then 'N/A'
        when md.device_and_implant_description !=0
            then md.device_and_implant_description
     end) as device_and_implant_description
FROM medical_devices_mapping as md
WHERE md.patient_id = p_id

p_id值由用户提供。

这是结果: enter image description here

这是我桌子的结构:

enter image description here

4 个答案:

答案 0 :(得分:0)

使用REGEXP条件代替''

SELECT md.coding_id, md.patient_id, md.implant_date,
       CASE WHEN md.device_and_implant_description REGEXP '^[A-Za-z0-9]+$'
            THEN md.device_and_implant_description
            ELSE 'N/A'
       END AS device_and_implant_description,
       md.device_and_implant_description
FROM medical_devices_mapping md
WHERE md.patient_id = p_id

答案 1 :(得分:0)

请使用NUll以及""。

如果你想使用NULL或''只有在存储数据之前,请确保存储空字符串或空字符串,然后相应地使用条件。

答案 2 :(得分:0)

也许你应该颠倒你的逻辑

case when trim(md.device_and_implant_description) is not null then md.device_and_implant_description
else 'N/A'
end

答案 3 :(得分:0)

我使用COALESCE()找到了解决方案。

建议的解决方案如下:

SELECT md.coding_id,
    md.patient_id,
    md.implant_date,
    (CASE when COALESCE(md.device_and_implant_description, '') !='' 
         then md.device_and_implant_description
        when COALESCE(md.device_and_implant_description, '') ='' 
         then 'N/A'
     end) as device_and_implant_description
FROM medical_devices_mapping as md
WHERE md.patient_id = p_id