SQL nvl équivalent - sans cas/cas des déclarations & isnull & fusionnent
Existe-il des nvl() des fonctions équivalentes dans SQL?
Ou quelque chose d'assez près à être utilisé de la même manière, dans certains scénarios?
Mise à JOUR:
pas de si les déclarations
aucun cas déclarations
aucune isnull
pas de fusionner
select nvl (purge_date,"SODIUFOSDIUFSDOIFUDSF") from id_rec where id=36581;
(expression)
SODIUFOSDIUFSDOIFUDSF
1 row(s) retrieved.
select isnull (purge_date,"SODIUFOSDIUFSDOIFUDSF") from id_rec where id=36581;
674: Routine (isnull) can not be resolved.
Error in line 1
Near character position 8
select coalesce (purge_date,"SODIUFOSDIUFSDOIFUDSF") from id_rec where id=36581;
674: Routine (coalesce) can not be resolved.
Error in line 1
Near character position 8
select decode(purge_date, NULL, "01/01/2009", purge_date) from id_rec where id=74115;
800: Corresponding types must be compatible in CASE expression.
Error in line 1
Near character position 57
- Exacte de la version que vous utilisez, serait utile. Aussi, si nvl fonctionne, pourquoi ne pas l'utiliser?
- Je ne suis pas sûr de la façon de trouver le numéro de version de la gi à l'aide de ... son informix et sa vieille... pour un scénario nvl issn pas de travail et je ne sais pas pourquoi
- Quel est le scénario qui NVL est à l'origine du problème?
- Il y a un champ dans une de mes tables qui est 'null' ("" ou " ") et de ses censé être le nom de quelqu'un. Nous avons mis une clé pour l'usage général et ne jamais mettre un nom. Il a finalement frappé le ventilateur et j'ai eu à résoudre, mais NVL ne l'a pas fait, je devais avoir autour d'elle avec un tas de BS
- N'oubliez pas que, contrairement à d'autres systèmes, Informix ne pas traiter une chaîne vide que NUL, les deux sont différents. L'exécution d'une Informix programme avec l'option '-V' option imprimer des informations de version. Le nom du programme que vous avez choisi peut aider, aussi.
- Par conséquent, ce que vous avez probablement besoin est une condition OÙ somecolumn = '' ou l'équivalent (un nombre quelconque d'espaces, y compris zéro, est OK; vous pouvez utiliser des guillemets au lieu de guillemets simples, trop).
Vous devez vous connecter pour publier un commentaire.
Vous semblez être l'aide d'Informix.
Autant que je sache, il n'y a DÉCODER là:
DECODE(field, NULL, 'it is null, man', field)
devrait vous donner le même résultat queNVL(field, 'it is null, man')
S'il vous plaît poster précisément le nom et la version du SGBD que vous utilisez.
DECODE
de travail est agréable, mais la date à laquelle vous êtes en essayant de donner unstring
, ou avec la conversion implicite j'imagine que c'estdatetime year to second
ou quelle que soit la valeur par défaut est de. Donc, utiliserDECODE(purge_date, NULL, EXTEND('01/01/2009', year to day), purge_date) from id_rec
convertirpurge_date
's format. (Juste remarqué, la même explication est en bas, dans @RET réponse)ISNULL (pour un seul remplacer)
ou
FUSIONNER (Retourne la première valeur non null expression parmi ses arguments.)
SQL Server:
IsNull ou FUSIONNENT
http://msdn.microsoft.com/en-us/library/ms184325.aspx
Sybase:
fonction isnull
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.blocks/html/blocks/blocks162.htm
Postgres:
Je ne pouvais pas en trouver un, même si n'avez pas complètement vérifiée. Suggère de sélectionner l'endroit où EST NULLE et de construire à partir d'ici
http://archives.postgresql.org/pgsql-sql/1998-06/msg00142.php
DB2 - FUSIONNER
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0000780.htm
Le problème avec votre DÉCODER instruction qui génère l'erreur 800 est simple.
'01/01/2009'
est traité comme une chaîne, et c'est en fait le 4ème argument qui génère l'erreur.Apprécier que l'entrée et la sortie d'un DÉCODAGE déclaration peut être différents types de données, de sorte que le moteur vous oblige à être plus explicite dans ce cas. (Voulez-vous
purge_date
jeté comme une chaîne ou la chaîne'01/01/2009'
, ou l'argument de la chaîne analysée comme une date ou à la date d'origine? Il n'y a aucun moyen pour le moteur de connaître.Essayez ceci:
Vous pouvez également écrire que le 3ème argument:
en fonction de la version et de préférence personnelle.