T-SQL: Logical Condition

Vi siete mai chiesti come effettuare dei confronti logici in T-SQL all’interno di una Stored Procedure che state scrivendo?

T-SQL: Logical Condition

In questo articolo vi mostrerò come utilizzare per semplificare al meglio la vostra vita.

  • IF
  • CASE

Prima di entrare nel vivo dell’articolo vi fornisco una dritta su quando utilizzare uno oppure l’altro.

  • IF: Lo consiglio quando il confronto è secco e vi serve un booleano di confronto
  • CASE: Lo consiglio quando il confronto avviene con una serie di valori possibili e cambiare il comportamento del codice in base a dei valori.

Stored Procedure

1
2
3
4
5
6
7
8
9
CREATE PROCEDURE dbo.LogicalConditionTest   
    @City nvarchar(50) 
AS   

    SET NOCOUNT ON;  

	-- code to add
 
GO  

IF

Il template iniziale crea una Stored Procedure che riceve in ingresso un parametro di tipo nvarchar dal nome City. Ora vediamo come testare il valore ricevuto in ingresso .

1
2
3
4
IF @City = 'Milano'
       SELECT 'Sei Milanese?';
ELSE 
       SELECT 'Da dove vieni?'

Capite che utilizzare IF quando hai molte possibilità rappresenta un vero suicidio. Forse e’ meglio passare a giocare coi grandi?

CASE

Partiamo dal precedente esempio e modifichiamolo per sostituire IF con CASE

1
2
3
4
5
6
7
SELECT
	CASE @City
		WHEN 'Milano' THEN 'Sei Milanese?'
		WHEN 'Torino' THEN 'Sei di Torino?'
		ELSE 'Da dove vieni?'
	END  
	AS Result

Come vedrete utilizzare CASE è molto più potente come possibilità’ offerte.

Importante: Se non mettere il ramo ELSE e nessuna WHEN viene soddisfatta verra’ tornato un valore NULL

TIPS: Vi ho detto del NULL perché nel caso di conversioni dati questo potrebbe essere un problema che vi porterà alla perdita di valori. Non dite “tanto a me non capita …” parlo per esperienza (non mia, ma l’ho visto succedere ed il recupero dei dati da un backup precedente è stato un vero suicidio)