2010-04-16 8 views
4

Tenir compte i une table user et j'ai trois colonnes mobilePhone, homePhone et workPhone ...requête Sql pour obtenir ce résultat

je dois sélectionner homePhone pour chaque utilisateur en tant que premier pref
s'il n'y a pas de valeur
      Je vais aller pour mobilePhone et
      s'il n'y a pas de valeur pour elle
            Je vais aller pour workPhone ....

Toute suggestion comment il peut être fait dans une base MySQL ..

Répondre

7

Essayez d'utiliser Sql Server COALESCE (Transact-SQL),

Renvoie le premier non nul expression parmi ses arguments.

va de même pour MySql COALESCE(value,...)

Renvoie la première valeur non NULL dans la liste, ou NULL s'il n'y a pas valeurs non NULL.

Quelque chose comme

SELECT COALESCE(homePhone, mobilePhone, workPhone) ContactPhone 
FROM Users 
+0

@astander très désolé dans mysql ... – bala3569

+0

Mysql fournit également COALESCE –

3

Vous voulez la fonction Coalesce qui retourne la première valeur non nulle:

Select Coalesce(homephone, mobilephone, workphone) Phone 
From `user` 

Coalesce existe dans MySQL. C'est une fonction définie par ANSI.

Coalesce function (MySQL).

+1

@Thomas et @astander désolé dans mysql – bala3569

0
SELECT user, homePhone 
FROM user 
WHERE homePhone != '' 

UNION 

SELECT user, mobilePhone 
FROM user 
WHERE homePhone = '' AND mobilePhone != '' 

UNION 

SELECT user, workPhone 
FROM user 
WHERE homePhone = '' AND mobilePhone = '' 
0

Vous pouvez utiliser imbriqué IF déclarations, ou CASE ou faire ce travail en utilisant la couche logique métier

0

Une autre solution consiste à utiliser l'instruction SQL suivante:

ISNULL(ISNULL(HomePhone,MobilePhone),WorkPhone) AS Phone 

Merci , Nirmal

Questions connexes