it-swarm.com.de

Was ist der Unterschied zwischen einfachen und doppelten Anführungszeichen in SQL?

Was ist der Unterschied zwischen einfachen und doppelten Anführungszeichen in SQL?

185
Vineet

Anführungszeichen werden verwendet, um den Anfang und das Ende einer Zeichenfolge in SQL anzuzeigen. Doppelte Anführungszeichen werden im Allgemeinen nicht in SQL verwendet, dies kann jedoch von Datenbank zu Datenbank variieren.

Verwenden Sie einfache Anführungszeichen.

Das ist sowieso der Hauptzweck. Sie können einfache Anführungszeichen für einen Spaltenalias verwenden - wenn Sie möchten, dass der Spaltenname, auf den Sie in Ihrem Anwendungscode verweisen, etwas anderes ist als das, was die Spalte tatsächlich in der Datenbank heißt. Zum Beispiel: PRODUCT.id wäre besser lesbar als product_id, daher verwenden Sie eine der folgenden Möglichkeiten:

  • SELECT PRODUCT.id AS product_id
  • SELECT PRODUCT.id 'product_id'

Entweder funktioniert in Oracle, SQL Server, MySQL… aber ich weiß, einige haben gesagt, dass der TOAD IDE bei Verwendung der einfachen Anführungszeichen etwas Ärger zu bereiten scheint.

Sie müssen einfache Anführungszeichen verwenden, wenn der Spaltenalias ein Leerzeichen enthält, z. B. product id. Es wird jedoch nicht empfohlen, für einen Spaltenalias mehr als ein Word zu verwenden.

121
OMG Ponies

Einfache Anführungszeichen begrenzen eine Zeichenfolgekonstante oder eine Datums-/Zeitkonstante.

Bezeichner für doppelte Anführungszeichen für z. Tabellennamen oder Spaltennamen. Dies ist im Allgemeinen nur dann erforderlich, wenn Ihre Kennung nicht den Regeln für einfache Kennungen entspricht.

Siehe auch:

Sie können MySQL in Anführungszeichen setzen, um den ANSI-Standard zu verwenden:

SET GLOBAL SQL_MODE=ANSI_QUOTES

Sie können Microsoft SQL Server in Anführungszeichen setzen, um doppelte Anführungszeichen zu verwenden:

SET QUOTED_IDENTIFIER ON
59
Bill Karwin

Zwei einfache Regeln, um uns zu merken, was in welchem ​​Fall verwendet werden soll:

  • [S] einzelne Anführungszeichen sind für [S] trings; [D] doppelte Anführungszeichen sind für [D] Datenbankbezeichner; 
  • Das Symbol `ist das gleiche wie das Symbol" . Sie können "mit aktivierten ANSI_QUOTES verwenden.

In ANSI SQL werden in Anführungszeichen doppelte Anführungszeichen (z. B. Tabellen) angegeben, die es ihnen ermöglichen, Zeichen zu enthalten, die ansonsten nicht zulässig sind oder die mit reservierten Wörtern identisch sind.

Einfache Anführungszeichen sind für Zeichenfolgen.

MySQL kennt den Standard jedoch nicht (es sei denn, SQL_MODE wird geändert) und ermöglicht deren austauschbare Verwendung für Strings.

Darüber hinaus verwenden Sybase und Microsoft auch eckige Klammern für die Bezeichnerkennung.

Es ist also etwas herstellerspezifisch. 

Andere Datenbanken wie Postgres und IBM halten sich tatsächlich an den ANSI-Standard :)

32
MarkR

Ich verwende dieses Mnemonic:

  • Einfache Anführungszeichen sind für Zeichenfolgen (eine Sache)
  • Anführungszeichen stehen für Tabellennamen und Spaltennamen (zwei Dinge)

Dies ist gemäß den Spezifikationen nicht zu 100% korrekt, aber diese Mnemonik hilft mir (dem Menschen).

6
guettli

Der Unterschied liegt in ihrer Verwendung. Die einfachen Anführungszeichen werden meistens verwendet, um eine Zeichenfolge in WHERE, HAVING und auch in einigen integrierten SQL-Funktionen wie CONCAT, STRPOS, POSITION usw. zu referenzieren.

Wenn Sie einen Alias ​​verwenden möchten, der Leerzeichen enthält, können Sie doppelte Anführungszeichen verwenden, um auf diesen Alias ​​zu verweisen.

Zum Beispiel

(select account_id,count(*) "count of" from orders group by 1)sub 

Hier ist eine Unterabfrage aus einer Auftragstabelle mit account_id als Fremdschlüssel, die ich aggregiere, um zu wissen, wie viele Bestellungen jedes Konto aufgegeben hat. Hier habe ich einer Spalte einen beliebigen zufälligen Namen als "Count of" gegeben. 

Jetzt schreiben wir eine äußere Abfrage, um die Zeilen anzuzeigen, in denen "count of" größer als 20 ist.

select "count of" from 
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;

Sie können denselben Fall auch auf Common Table-Ausdrücke anwenden. 

0