Was ist die vollständige Liste aller Sonderzeichen für eine SQL-Klausel (ich interessiere mich für SQL Server, aber andere wären auch gut)?
Z.B
SELECT Name FROM Person WHERE Name LIKE '%Jon%'
- %.
- _
- [Spezifizierer] ZB [az]
- [^ Spezifizierer]
- ESCAPE-Klausel ZB% 30! %% 'ESCAPE'! ' wird 30% als wahr bewerten
- 'Charaktere müssen entkommen werden mit' ZB werden sie zu ihnen '
%
- Beliebige Zeichenfolge mit null oder mehr Zeichen._
- Beliebiges einzelnes Zeichen- ESCAPE-Klausel ZB% 30! %% 'ESCAPE'! ' wird 30% als wahr bewerten
%
- Beliebige Zeichenfolge mit null oder mehr Zeichen._
- Beliebiges einzelnes Zeichen- ESCAPE-Klausel ZB% 30! %% 'ESCAPE'! ' wird 30% als wahr bewerten
Sybase
- %.
- _
- [Spezifizierer] ZB [az]
- [^ Spezifizierer]
%
- Beliebige Zeichenfolge mit null oder mehr Zeichen._
- Beliebiges einzelnes ZeichenReferenzhandbuch hier [PDF]
%
- Beliebige Zeichenfolge mit null oder mehr Zeichen._
- Beliebiges einzelnes Zeichen- ESCAPE-Klausel ZB% 30! %% 'ESCAPE'! ' wird 30% als wahr bewerten
- %.
- _
- Ein ESCAPE-Zeichen nur, wenn angegeben .
PostgreSQL hat auch den SIMILAR TO
Operator, der Folgendes hinzufügt:
[specifier]
[^specifier]
|
- eine von zwei Alternativen*
- Wiederholung des vorherigen Elements null oder mehrmals.+
- Wiederholung des vorherigen Artikels ein- oder mehrmals.()
- Elemente gruppieren
Die Idee ist, dies zu einem Community-Wiki zu machen, das dafür zu einem "One-Stop-Shop" werden kann.
sql
special-characters
sql-like
a_horse_with_no_name
quelle
quelle
LIKE
: zum BeispielWHERE familyname = 'O''Toole'
. Drittens führt derSIMILAR TO
Operator eine Art hybriden regulären Ausdruck ein, der seine eigenen Funktionen (und viele weitere Sonderzeichen) aufweist und daher hier wahrscheinlich nicht enthalten sein sollte. Ich denke, das macht 3 Kommentare, aber niemand erwartet die spanische Inquisition.Antworten:
Für SQL Server unter http://msdn.microsoft.com/en-us/library/ms179859.aspx :
% Beliebige Zeichenfolge mit null oder mehr Zeichen.
WHERE title LIKE '%computer%'
findet alle Buchtitel mit dem Wort "Computer" an einer beliebigen Stelle im Buchtitel._ Beliebiges einzelnes Zeichen.
WHERE au_fname LIKE '_ean'
findet alle aus vier Buchstaben bestehenden Vornamen, die mit ean enden (Dean, Sean usw.).[] Jedes einzelne Zeichen innerhalb des angegebenen Bereichs ([af]) oder Satzes ([abcdef]).
WHERE au_lname LIKE '[C-P]arsen'
findet Nachnamen des Autors, die mit arsen enden und mit einem einzelnen Zeichen zwischen C und P beginnen, z. B. Carsen, Larsen, Karsen usw. Bei der Bereichssuche können die im Bereich enthaltenen Zeichen abhängig von den Sortierregeln der Sortierung variieren.[^] Jedes einzelne Zeichen, das nicht innerhalb des angegebenen Bereichs ([^ af]) oder Satzes ([^ abcdef]) liegt.
WHERE au_lname LIKE 'de[^l]%'
alle Nachnamen des Autors, die mit de beginnen und bei denen der folgende Buchstabe nicht l ist.quelle
ANSI SQL92 :
Es ist enttäuschend, dass sich viele Datenbanken nicht an die Standardregeln halten und zusätzliche Zeichen hinzufügen oder ESCAPE mit dem Standardwert '\' falsch aktivieren, wenn es fehlt. Als hätten wir noch nicht genug Probleme mit '\'!
Es ist unmöglich, hier DBMS-unabhängigen Code zu schreiben, da Sie nicht wissen, welchen Zeichen Sie entkommen müssen, und der Standard besagt, dass Sie Dinge nicht entkommen können, die nicht entkommen müssen. (Siehe Abschnitt 8.5 / Allgemeine Regeln / 3.a.ii.)
Vielen Dank, dass Sie SQL! gnnn
quelle
Sie sollten hinzufügen, dass Sie in SQL Server ein zusätzliches 'hinzufügen müssen, um einem Bestehen zu entgehen':
Schmiede -> Schmiede
quelle
Sybase:
quelle
Mögliche Antwort für SQL Server
Interessant Ich habe gerade einen Test mit LinqPad mit SQL Server ausgeführt, auf dem nur Linq to SQL ausgeführt werden sollte, und es wird die folgende SQL-Anweisung generiert.
Records .Where (r => r.Name.Contains ("lkjwer --_ ~ []"))
Ich habe es also noch nicht getestet, aber es sieht so aus, als ob das
ESCAPE '~'
Schlüsselwort möglicherweise das automatische Escapezeichen einer Zeichenfolge zur Verwendung in einem ähnlichen Ausdruck ermöglicht.quelle
ESCAPE
weil es die Verwendung von zwei Zeichen pro maskiertem Zeichen (z. B.%
wird~%
) anstelle von drei (z. B. ohneESCAPE
,%
wird[%]
) ermöglicht.