2010-03-20 17 views
12

Mi chiedo se sia possibile eseguire il comando mysql che può selezionare un campo alternativo se il primo campo specificato è vuoto, sulla stessa tabella.MySQL: selezione del campo alternativo se il campo dato è vuoto

Esempio: ho una tabella chiamata "post" che ha "intro" e "contenuto". Nella stessa frase vorrei selezionare come risultato "content" se "intro" è vuoto, ma non avendo entrambi nella matrice dei risultati.

Grazie in anticipo

risposta

16

È possibile utilizzare la funzione IF:

SELECT IF(LENGTH(intro)>0, intro, content) 
FROM posts 

Oppure si possono testare per NULL se vuoi dire che è vuoto NULL

+0

Anche grazie, funziona anche alla grande! – Kyobul

+1

+1: 'CASE' sarebbe un'alternativa valida, ma la parola chiave' LENGTH' non è supportata su tutti gli altri database (Oracle, Postgres ma non SQL Server - deve usare 'LEN') che rende la portabilità delle query quasi discutibile. –

14

Coalesce è quello che stai cercando.

SELECT COALESCE(intro, content) AS column1 
FROM table 

Supponendo che l'introduzione sia nullo e non una stringa di lunghezza zero.

+0

Grazie, funziona benissimo! – Kyobul

+1

Ho appena saputo qualcosa oggi. Bella risposta. – Vinny

2

Ci sono due potenziali modi. Quando il modo è con una dichiarazione di un caso.

Select case when field1 <> '' then field2 else field1 end 

oppure è possibile utilizzare la coalesce.

select coalesce(field1, field2) 
+0

Ce ne sono più di due. Hai IF, IFNULL, CASE WHEN, CASE fiel1 WHEN e COALESCE fuori dalla mia testa. E "<> '" non funzionerà nel caso ovvio quando "vuoto" significa NULL. – dkretz

+0

Grazie a te, terzo metodo, funziona anche alla grande! – Kyobul

Problemi correlati