web-dev-qa-db-fra.com

Sélectionnez la date (horodatage) de PostgreSQL comme chaîne (char), méfiez-vous de la valeur NULL

Je souhaite sélectionner une date (ma colonne est de type horodatage). Mais quand dans la colonne est une date NULL, je veux retourner une chaîne vide. Comment faire ça? J'ai écrit ceci:

SELECT
   CASE WHEN to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') IS NULL THEN ''
      ELSE to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') AS last_post END
   to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') AS last_post, content
FROM topic;

Mais cela me montre quelques erreurs, je ne sais pas vraiment pourquoi:

ERROR:  syntax error at or near "as"
LINE 1: ...ELSE to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') AS last_po...
                                                            ^
17
Katie

L'utilisation de la fonction COALESCE() est la meilleure approche, car elle permute simplement une valeur de remplacement dans le cas d'un NULL. La lisibilité est également considérablement améliorée. :)

SELECT COALESCE(to_char(last_post, 'MM-DD-YYYY HH24:MI:SS'), '') AS last_post, content FROM topic;
21
Nerdwood

Vous mettez votre AS dans le boîtier?

Essayer:

SELECT
   CASE WHEN last_post IS NULL THEN ''
     ELSE to_char(last_post, 'MM-DD-YYYY HH24:MI:SS') END AS last_post,
   content
FROM topic;

Je n'ai pas encore essayé la requête.

3
Jerry
select coalesce(to_char(last_post, 'MM-DD-YYYY HH24:MI:SS'), '') as last_post, content
from topic;
3
Clodoaldo Neto