Ho la seguente domanda: '?'query SQL se il parametro è nullo selezionare tutti
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;
Ora voglio che se è NULL, tutti i record devono essere selezionati. Come posso ottenere questo in SQL? Grazie
Ho la seguente domanda: '?'query SQL se il parametro è nullo selezionare tutti
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ?;
Ora voglio che se è NULL, tutti i record devono essere selezionati. Come posso ottenere questo in SQL? Grazie
È inoltre possibile utilizzare le funzioni IFNULL
, COALESCE
, NVL
, ISNULL
per controllare valore nullo. Dipende dal tuo RDBMS.
MySQL:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = IFNULL(?,NAME);
o
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = COALESCE(?,NAME);
ORACLE:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = NVL(?,NAME);
SQL Server/SYBASE:
SELECT NAME, SURNAME FROM MY_TABLE WHERE NAME = ISNULL(?,NAME);
Questo non funzionerà se ci sono valori nulli in 'NAME'. Ma per le colonne non annullabili questa è la strada da percorrere =) (MODIFICA: almeno non in SQL Server) –
Attenzione che questo può produrre query più lente del condizionamento dell'SQL per non contenere la clausola where quando il parametro è nullo. – Kram
Prova questo:
SELECT *
FROM MY_TABLE
WHERE @parameter IS NULL OR NAME = @parameter;
Come usare questo in PHP? – prograshid
@prograshid - Esegui semplicemente la query in PHP –
Ho provato a esporre la stringa di query ma la sua concessione quando si accede al risultato. Dire una funzione indefinita chiama fetch_assoc – prograshid
Questo mi fa odiare T-SQL ancora più ... –