1774 Stimmen

Wie führe ich ein IF...THEN in einem SQL SELECT aus?

Wie führe ich eine IF...THEN in einem SQL SELECT Aussage?

Zum Beispiel:

SELECT IF(Obsolete = 'N' OR InStock = 'Y' ? 1 : 0) AS Saleable, * FROM Product

17 Stimmen

Das sollten Sie sich ansehen Link . Bezüglich: SQL WHERE-Klauseln: Vermeiden Sie CASE, verwenden Sie boolesche Logik

4 Stimmen

@Somebody: Das ist nicht wirklich relevant, denn in dem Artikel geht es darum, logische Umschreibregeln zu verwenden, um eine Implikation in eine Disjunktion umzuwandeln. Der Hinweis ist das Wort "logisch", d. h. etwas, das sich in wahr oder falsch auflöst, was für die Projektion nicht zutrifft. TL;DR Artikel gilt für WHERE y CHECK aber nicht SELECT .

7 Stimmen

Die Antwort von @MartinSmith ist die eleganteste - verwenden Sie IIF in SQL 2012+.

62voto

John Sheehan Punkte 75473
SELECT  
(CASE 
     WHEN (Obsolete = 'N' OR InStock = 'Y') THEN 'YES'
                                            ELSE 'NO' 
 END) as Salable
, * 
FROM Product

51voto

Ken Punkte 2079

Desde dieser Link können wir verstehen IF THEN ELSE in T-SQL:

IF EXISTS(SELECT *
          FROM   Northwind.dbo.Customers
          WHERE  CustomerId = 'ALFKI')
  PRINT 'Need to update Customer Record ALFKI'
ELSE
  PRINT 'Need to add Customer Record ALFKI'

IF EXISTS(SELECT *
          FROM   Northwind.dbo.Customers
          WHERE  CustomerId = 'LARSE')
  PRINT 'Need to update Customer Record LARSE'
ELSE
  PRINT 'Need to add Customer Record LARSE' 

Ist das nicht gut genug für T-SQL?

3 Stimmen

Dies ist nicht das, was der Antragsteller wollte, aber es ist sehr nützlich zu wissen, dass man if-Anweisungen verwenden kann außerhalb eine Select-Anweisung.

2 Stimmen

EXISTS ist gut, weil es die Suchschleife verlässt, wenn das Element gefunden wird. Ein COUNT läuft bis zum Ende der Tabellenzeilen. Das hat nichts mit der Frage zu tun, ist aber wichtig zu wissen.

51voto

user7658 Punkte 944

Microsoft SQL Server (T-SQL)

In einem select verwenden:

select case when Obsolete = 'N' or InStock = 'Y' then 'YES' else 'NO' end

In einem where Klausel, verwenden:

where 1 = case when Obsolete = 'N' or InStock = 'Y' then 1 else 0 end

1 Stimmen

Warum sollten Sie nicht einfach tun where Obsolete = 'N' or InStock = 'Y' und halbieren Sie die Stelle praktisch

50voto

Santiago Cepas Punkte 3964
 SELECT
   CASE 
      WHEN OBSOLETE = 'N' or InStock = 'Y' THEN 'TRUE' 
      ELSE 'FALSE' 
   END AS Salable,
   * 
FROM PRODUCT

33voto

Ravi Anand Punkte 4489

Einfache if-else-Anweisung in SQL Server:

DECLARE @val INT;
SET @val = 15;

IF @val < 25
PRINT 'Hi Ravi Anand';
ELSE
PRINT 'By Ravi Anand.';

GO

Verschachtelte If...else-Anweisung in SQL Server -

DECLARE @val INT;
SET @val = 15;

IF @val < 25
PRINT 'Hi Ravi Anand.';
ELSE
BEGIN
IF @val < 50
  PRINT 'what''s up?';
ELSE
  PRINT 'Bye Ravi Anand.';
END;

GO

3 Stimmen

Verspätet, aber innen brauchbar SELECT wie OP fragte?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X