我在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
值由用户提供。
这是我桌子的结构:
答案 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