2015-06-17 5 views
7

Esiste un valore che posso inserire in una clausola SQL IN che garantirà che la clausola valuterà su falso?Clausola SQL IN che è garantita per valutare su false

SELECT * 
FROM Products 
WHERE ProductID IN (???) 

C'è qualcosa che potrei sostituire ??? con per garantire che non vengano restituite righe?

+0

Che tipo di dati è ProductID? – Matt

+0

Un valore numerico ma non un intero, 1.23? – jarlh

+0

@Matt Supponiamo che sia un –

risposta

11

Sostituire con NULL. Non c'è migliore garanzia!

Perché nessun altro valore può essere uguale a NULL, anche NULL stesso.

E questo è un valore universale per qualsiasi tipo (come @ zohar-peled menzionato).

+0

int con lo stesso pensiero. bastonami :) + 1 – ughai

+1

Mi picchia! 'IN (NULL)' non potrà mai corrispondere, nemmeno a 'NULL' –

+0

1 secondo più veloce di me :-) –

-1

Inserisci un ID prodotto inizialmente non valido, ad es. -1.

SELECT * 
FROM Products 
WHERE ProductID IN (-1) 
0

Usa NULL

SELECT * 
FROM Products 
WHERE ProductID IN (NULL) 

Dato che questo restituirà nulla

-1

Prova

SELECT * 
FROM Products 
WHERE ProductID IN (0) 

Sono abbastanza sicuro che non dovete prodotto con ID = 0

Che restituirà falsa.

-1
SELECT * 
FROM Products 
WHERE ProductID IN (SELECT '') 

Un altro modo possibile.

+0

'SELECT ''' sarà trasmesso implicitamente a '0', che non posso accettare. –

+0

Grazie per il feedback. – DNac