In der Dokumentation zum LIKE-Operator wird nichts über die Groß- und Kleinschreibung angegeben. Ist es? Wie aktiviere / deaktiviere ich es?
Ich frage varchar(n)
Spalten in einer Microsoft SQL Server 2005-Installation ab, wenn dies wichtig ist.
sql
sql-server-2005
varchar
sql-like
Marcel
quelle
quelle
LIKE
wird zwischen Groß- und Kleinschreibung unterschieden, wenn dies nicht der Fall ist, dannLIKE
nichtAntworten:
Es ist nicht der Operator, bei dem zwischen Groß- und Kleinschreibung unterschieden wird, sondern die Spalte selbst.
Wenn eine SQL Server-Installation durchgeführt wird, wird eine Standardkollatierung für die Instanz ausgewählt. Sofern nicht ausdrücklich anders angegeben (siehe unten stehende Kollatierungsklausel), erbt eine neue Datenbank beim Erstellen die Kollatierung von der Instanz und beim Erstellen einer neuen Spalte die Kollatierung von der Datenbank, zu der sie gehört.
Eine Sortierung wie bestimmt,
sql_latin1_general_cp1_ci_as
wie der Inhalt der Spalte behandelt werden soll. CI steht für Groß- und Kleinschreibung und AS für Akzent.Eine vollständige Liste der Kollatierungen finden Sie unter https://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx
(a) Überprüfen einer Instanzsortierung
(b) Überprüfen einer Datenbanksortierung
(c) Erstellen einer Datenbank mit einer anderen Sortierung
(d) Erstellen einer Spalte mit einer anderen Sortierung
(e) Ändern einer Spaltenkollatierung
Es ist möglich, eine Instanz und Datenbankkollatierungen zu ändern, dies wirkt sich jedoch nicht auf zuvor erstellte Objekte aus.
Es ist auch möglich, eine Spaltenkollatierung für den Zeichenfolgenvergleich im laufenden Betrieb zu ändern. In einer Produktionsumgebung wird dies jedoch dringend empfohlen, da dies äußerst kostspielig ist.
quelle
[A-Z]
immer zwischen Groß- und Kleinschreibung unterscheidet.[ABCDEFGHIJKLMNOPQRSŠTUVWXYZŽÅÄÖ]
scheint jedoch der Zusammenstellung zu gehorchen.select COLLATION_NAME, iif(cast(COLLATIONPROPERTY(COLLATION_NAME, 'ComparisonStyle') as int) & 1 = 0, 'case sensitive', 'case insensitive') from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'exampletable' and COLUMN_NAME = 'examplecolumn'
Das ganze Gerede über die Zusammenstellung scheint etwas zu kompliziert. Warum nicht einfach so etwas verwenden wie:
Dann wird bei Ihrem Scheck unabhängig von der Sortierung die Groß- und Kleinschreibung nicht berücksichtigt
quelle
like 'a%'
ohne Berücksichtigung der Groß- und Kleinschreibung indiziert ist, könnte der Index verwendet werden und dieupper
Version nicht.like
Bediener zwischen Groß- und Kleinschreibung unterscheidet oder nicht .Latin1_General_CI_AS
, dann tutUPPER(@@VALUE) NOT LIKE '%SOMETHING%'
oder@@COLUMN NOT LIKE '%SOMETHING%'
ist irrelevant: Ergebnis wäre das gleiche.Sie haben die Möglichkeit, die Sortierreihenfolge zum Zeitpunkt der Definition Ihrer Tabelle zu definieren . Wenn Sie eine Reihenfolge festlegen, bei der zwischen Groß- und Kleinschreibung unterschieden
LIKE
wird, verhält sich Ihr Bediener zwischen Groß- und Kleinschreibung. Wenn Sie eine Sortierreihenfolge ohne Berücksichtigung der Groß- und Kleinschreibung definieren,LIKE
ignoriert der Operator auch die Groß- und Kleinschreibung von Zeichen:Hier ist eine kurze Demo zu sqlfiddle, die die Ergebnisse der Sortierreihenfolge bei Suchvorgängen mit zeigt
LIKE
.quelle
Wenn Sie eine Suche mit Groß- und Kleinschreibung durchführen möchten, ohne die Sortierung der Spalte / Datenbank / des Servers zu ändern, können Sie immer die
COLLATE
Klausel verwenden, zFunktioniert auch umgekehrt, wenn in Ihrer Spalte / Datenbank / Ihrem Server die Groß- und Kleinschreibung beachtet wird und Sie keine Suche nach Groß- und Kleinschreibung wünschen, z
quelle
WHERE bar COLLATE Latin1_General_CS_AS LIKE '[j-k]%'
diese zurückgegeben wird,John
da in dieser Kollatierung das GroßbuchstabenJ
zwischen Klein-j
und Kleinbuchstaben liegtk
. Es ist so, wieaAbBcC...jJkKlLmM...
es nicht offensichtlich ist. Es scheintLatin1_General_BIN
vorhersehbarer mit Bereichssuchen mit LIKE-Operator.Der
like
Operator nimmt zwei Zeichenfolgen. Diese Saiten haben kompatibel Sortierungen haben, die erklärt hier .Meiner Meinung nach werden die Dinge dann kompliziert. Die folgende Abfrage gibt einen Fehler zurück, der besagt, dass die Kollatierungen nicht kompatibel sind:
Auf einer zufälligen Maschine ist hier die Standardkollatierung
SQL_Latin1_General_CP1_CI_AS
. Die folgende Abfrage ist erfolgreich, gibt jedoch keine Zeilen zurück:Die Werte "abc" und "ABC" stimmen in einer Welt mit Groß- und Kleinschreibung nicht überein.
Mit anderen Worten, es gibt einen Unterschied zwischen der fehlenden Sortierung und der Verwendung der Standardkollatierung. Wenn eine Seite keine Sortierung hat, wird ihr eine explizite Sortierung von der anderen Seite "zugewiesen".
(Die Ergebnisse sind dieselben, wenn sich die explizite Sortierung links befindet.)
quelle
Versuchen Sie zu laufen,
Finden Sie dann heraus, ob bei Ihrer Sortierung zwischen Groß- und Kleinschreibung unterschieden wird oder nicht.
quelle
Sie können die Eigenschaft jedes Elements ändern.
quelle
Sie können die Sortierung einfach in Microsoft SQL Server Management Studio ändern.
quelle