2017-09-07 1 views
1

J'ai une table dans MySQL où dans un enregistrement un champ (par défaut: Aucun) n'a aucune valeur.Mysql: Si un champ dans un enregistrement est vide, je veux que la procédure stockée retourne N/A comme valeur

J'utilise une procédure stockée pour sélectionner les valeurs de cette table et I lorsque ce champ n'a aucune valeur, je devrais obtenir la valeur N/A.

J'ai essayé le code suivant, mais je reçois le champ sans valeur. La valeur p_id est donnée par l'utilisateur.

Ceci est le résultat: enter image description here

C'est la structure de ma table:

enter image description here

+0

device_and_implant_description apparaît deux fois dans votre sélection, mais la sortie ne montre qu'un seul? –

+0

@ P.Salmon Oui c'est par erreur. Je veux seulement la sélection de cas. Je vais éditer ma question. Merci pour votre commentaire. – zinon

Répondre

0

J'ai trouvé la solution en utilisant COALESCE().

La solution proposée est la suivante:

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 
0

Utilisez REGEXP état au lieu de ''

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 
+0

Merci pour votre réponse, mais le problème persiste. La valeur n'est pas nulle. – zinon

+0

La valeur par défaut est none. Vous ne pouvez pas remplacer '''' par 'NONE' (Wild gues) –

+0

@MarkBaijens Je l'ai essayé par' NONE' n'est pas une valeur reconnaissable dans la procédure stockée mysql. – zinon

0

S'il vous plaît utiliser Null aussi bien comme "".

Si vous souhaitez utiliser NULL ou '' seulement alors avant de stocker des données, assurez-vous que vous stockez une chaîne vide ou vide, puis utilisez la condition.

+0

Lorsque j'insère des données via phpmyadmin, cette table est dans le champ 'device_and_implant_description', je n'écris rien. – zinon

+0

S'il vous plaît partager le schéma de la table qui sera clair, si la valeur par défaut est null alors il va stocker NULL. Si vous ne spécifiez rien encore, il va stocker NULL. Vous pouvez donc utiliser NULL dans votre SQL. –

0

Peut-être que vous devriez inverser votre logique

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

Malheureusement toujours pas de chance! – zinon

+0

Ensuite, vérifiez les caractères non imprimables comme les sauts de ligne, les retours chariot etc. –