Είναι δυνατή η χρήση μιας ρήτρας IF εντός μιας ρήτρας WHERE στην MS SQL;
Παράδειγμα:
WHERE
IF IsNumeric(@OrderNumber) = 1
OrderNumber = @OrderNumber
ELSE
OrderNumber LIKE '%' + @OrderNumber + '%'
Χρησιμοποιήστε μια δήλωση CASE ΠΡΟΗΓΗΣΗ: Η προηγούμενη σύνταξη (όπως επισημάνθηκε από μερικούς ανθρώπους) δεν λειτουργεί. Μπορείτε να χρησιμοποιήσετε την CASE ως εξής:
WHERE OrderNumber LIKE
CASE WHEN IsNumeric(@OrderNumber) = 1 THEN
@OrderNumber
ELSE
'%' + @OrderNumber
END
Ή μπορείτε να χρησιμοποιήσετε μια δήλωση IF όπως επισημαίνει ο @N. J. Reed.
Θέλετε τη δήλωση CASE
WHERE OrderNumber LIKE
CASE WHEN IsNumeric(@OrderNumber)=1 THEN @OrderNumber ELSE '%' + @OrderNumber END