bigpoint Geschrieben 4. Januar 2007 Teilen Geschrieben 4. Januar 2007 Hallo was bedeutet so eine Abfrage Like ’4[1234]%’ oder like ’[89]%’ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 4. Januar 2007 Teilen Geschrieben 4. Januar 2007 was bedeutet so eine Abfrage Like ’4[1234]%’ Der gesuchte Wert muss mit 4 beginnern, das 2. Zeichen 1 oder 2 oder 3 oder 4 sein, der Rest ist wurscht. was bedeutet so eine Abfrage like ’[89]%’ Der gesuchte Wert muss mit 8 oder 9 beginnen, der Rest ist wurscht. Schau mal in der Hilfe des Query Analyzers unter LIKE nach. hth und hollaröhdulljöh Reinhold Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 4. Januar 2007 Autor Teilen Geschrieben 4. Januar 2007 Habe ich gekuckt aber leider nichts gefunden Schau mal in der Hilfe des Query Analyzers unter LIKE nach. Reinhold vielen dank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 5. Januar 2007 Teilen Geschrieben 5. Januar 2007 Habe ich gekuckt aber leider nichts gefunden vielen dank Aus besagter Hilfe: LIKE Bestimmt, ob die angegebene Zeichenfolge einem angegebenen Muster entspricht. Ein Muster kann normale Zeichen und Platzhalterzeichen einschließen. Bei einem Mustervergleich müssen normale Zeichen exakt mit den angegebenen Zeichen in der Zeichenfolge übereinstimmen. Platzhalterzeichen können jedoch mit beliebigen Teilen der Zeichenfolge übereinstimmen. Das Verwenden der Vergleichsoperatoren für Zeichenfolgen = und != ist nicht so flexibel wie das Verwenden von Platzhalterzeichen mit dem LIKE-Operator. Ist eines der Argumente nicht vom Zeichenfolgen-Datentyp, versucht Microsoft® SQL Serverâ„¢, dieses Argument gegebenenfalls in den Zeichenfolgen-Datentyp zu konvertieren. Syntax match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ] Argumente match_expression Ein gültiger SQL Server-Ausdruck des Zeichenfolgen-Datentyps. pattern Das Muster, das in match_expression gesucht wird. Das Muster kann die folgenden gültigen SQL Server-Platzhalterzeichen einschließen. Platzhalter Beschreibung Beispiel % Eine Zeichenfolge aus null oder mehr Zeichen WHERE title LIKE '%Computer%' findet alle Buchtitel, die das Wort 'Computer' enthalten. _ (Unterstrich) Ein einzelnes Zeichen WHERE au_fname LIKE '_ean' findet alle Vornamen mit vier Buchstaben, die auf ean enden (Dean, Sean usw.). [ ] Beliebiges einzelnes Zeichen im angegebenen Bereich ([a-f]) oder in der angegebenen Menge ([abcdef]). WHERE au_lname LIKE '[C-P]arsen' findet alle Autorennachnamen, die auf arsen enden und mit einem einzelnen Zeichen zwischen C und P beginnen, z. B.: Carsen, Larsen, Karsen usw. [^] Beliebiges einzelnes Zeichen, das sich nicht im angegebenen Bereich ([^a-f]) oder in der angegebenen Menge ([^abcdef]) befindet. WHERE au_lname LIKE 'de[^l]%' findet alle Autorennachnamen, die mit de beginnen und deren dritter Buchstabe nicht l ist. escape_character Ein beliebiger gültiger SQL Server-Ausdruck eines beliebigen Datentyps aus der Zeichenfolgen-Datentypkategorie. escape_character hat keine Standardeinstellung und darf nur aus genau einem Zeichen bestehen. Ergebnistypen Boolesch Ergebniswert LIKE gibt TRUE zurück, wenn match_expression dem angegebenen pattern entspricht. Hinweise Beim Zeichenfolgenvergleich mit LIKE werden alle in der Musterzeichenfolge vorkommenden Zeichen berücksichtigt, einschließlich führender oder nachfolgender Leerzeichen. Wenn in einer Abfrage LIKE 'abc ' (abc, gefolgt von einem Leerzeichen) verwendet wird, um Zeilen zurückzugeben, die dem Muster abc ähnlich sind, werden keine Zeilen zurückgegeben, die den Wert abc (abc ohne Leerzeichen) enthalten. Nachfolgende Leerzeichen in dem Ausdruck, der mit dem Muster verglichen wird, werden jedoch ignoriert. Wenn in einer Abfrage LIKE 'abc' (abc ohne Leerzeichen) verwendet wird, um Zeilen zurückzugeben, die dem Muster abc ähnlich sind, werden alle Zeilen zurückgegeben, die mit abc anfangen und null oder mehr nachfolgende Leerzeichen enthalten. Ein Zeichenfolgenvergleich mithilfe eines Musters, das Daten der Typen char und varchar enthält, kann bei einem Vergleich mit dem LIKE-Operator wegen der Art der Datenspeicherung fehlschlagen. Daher ist es wichtig zu verstehen, wie die einzelnen Datentypen gespeichert werden und wann ein Vergleich mit LIKE fehlschlagen kann. Im folgenden Beispiel wird eine lokale char-Variable an eine gespeicherte Prozedur übergeben. Mit einem Mustervergleich sollen dann alle Bücher eines bestimmten Autors gefunden werden. Der Nachname des Autors wird in dieser Prozedur als Variable übergeben. CREATE PROCEDURE find_books @AU_LNAME char(20) AS SELECT @AU_LNAME = RTRIM(@AU_LNAME) + '%' SELECT t.title_id, t.title FROM authors a, titleauthor ta, titles t WHERE a.au_id = ta.au_id AND ta.title_id = t.title_id AND a.au_lname LIKE @AU_LNAME Die find_books-Prozedur gibt keine Zeilen zurück, da die char-Variable (@AU_LNAME) immer dann nachfolgende Leerzeichen enthält, wenn der Name weniger als 20 Zeichen enthält. Da die au_lname-Spalte vom Typ varchar ist, sind keine nachfolgenden Leerzeichen vorhanden. Diese Prozedur schlägt fehl, da die nachfolgenden Leerzeichen von Bedeutung sind. Das folgende Beispiel ist erfolgreich, da nachfolgende Leerzeichen zu einer varchar-Variablen nicht hinzugefügt werden: USE pubs GO CREATE PROCEDURE find_books2 @au_lname varchar(20) AS SELECT t.title_id, t.title FROM authors a, titleauthor ta, titles t WHERE a.au_id = ta.au_id AND ta.title_id = t.title_id AND a.au_lname LIKE @au_lname + '%' EXEC find_books2 'ring' Im Folgenden wird das Resultset aufgeführt: title_id title -------- --------------------------------------------------------------- MC3021 The Gourmet Microwave PS2091 Is Anger the Enemy? PS2091 Is Anger the Enemy? PS2106 Life Without Fear (4 row(s) affected) Mustervergleiche mit LIKE Bei der Suche nach datetime-Werten wird die Verwendung von LIKE empfohlen, da datetime-Einträge verschiedene Teile eines Datums enthalten können. Wird z. B. der Wert 19981231 9:20 in eine Spalte namens arrival_time eingefügt, kann die Klausel WHERE arrival_time = '9:20' keine exakte Übereinstimmung mit der Zeichenfolge 9:20 finden, da SQL Server den Eintrag in 1998-12-31 09:20:00.000 konvertiert. Eine Übereinstimmung wird jedoch durch die Klausel WHERE arrival_time LIKE '%9:20%' gefunden. LIKE unterstützt Mustervergleiche im ASCII- und Unicodeformat. Sind alle Argumente (match_expression, pattern und gegebenenfalls escape_character) ASCII-Zeichen, wird ein ASCII-Mustervergleich durchgeführt. Wenn eines der Argumente von einem Unicode-Datentyp ist, werden alle Argumente in Unicode konvertiert und ein Unicode-Mustervergleich durchgeführt. Wenn Sie beim LIKE-Operator Unicode-Daten (nchar- oder nvarchar-Datentypen) verwenden, werden nachfolgende Leerzeichen berücksichtigt. Bei Daten, die nicht vom Typ Unicode sind, werden nachfolgende Leerzeichen ignoriert. Der Unicode-LIKE-Operator ist mit dem SQL-92-Standard kompatibel. Der ASCII-LIKE-Operator ist mit früheren Versionen von SQL Server kompatibel. Die folgenden Beispiele verdeutlichen die Unterschiede der zurückgegebenen Zeilen beim Durchführen von Mustervergleichen mit ASCII- und Unicode-LIKE-Operatoren: -- ASCII pattern matching with char column CREATE TABLE t (col1 char(30)) INSERT INTO t VALUES ('Robert King') SELECT * FROM t WHERE col1 LIKE '% King' -- returns 1 row -- Unicode pattern matching with nchar column CREATE TABLE t (col1 nchar(30)) INSERT INTO t VALUES ('Robert King') SELECT * FROM t WHERE col1 LIKE '% King' -- no rows returned -- Unicode pattern matching with nchar column and RTRIM CREATE TABLE t (col1 nchar (30)) INSERT INTO t VALUES ('Robert King') SELECT * FROM t WHERE RTRIM(col1) LIKE '% King' -- returns 1 row Anmerkung Beim Durchführen von Zeichenfolgenvergleichen mit LIKE werden alle Zeichen der Musterzeichenfolge berücksichtigt, einschließlich führender und nachfolgender Leerzeichen. Verwenden des %-Platzhalterzeichens Wird bei LIKE beispielsweise 5% angegeben, sucht SQL Server nach der Zahl 5, gefolgt von einer beliebigen Zeichenfolge mit null oder mehr Zeichen. In der folgenden Abfrage werden z. B. alle Systemtabellen einer Datenbank angezeigt, da alle Namen dieser Tabellen mit den Buchstaben sys beginnen: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'sys%' Anmerkung Bedenken Sie, dass sich Systemtabellen von Version zu Version ändern können. Zum Arbeiten mit SQL Server-Systemtabellen wird die Verwendung von Informationsschemasichten oder entsprechenden gespeicherten Prozeduren empfohlen. Mit NOT LIKE 'sys%' werden alle Objekte angezeigt, die nicht Systemtabellen sind. Sind insgesamt 32 Objekte vorhanden und LIKE ermittelt 13 dieser Objekte, die dem Muster entsprechen, ermittelt NOT LIKE die 19 Objekte, die dem Muster nicht entsprechen. Mit einem Muster wie in LIKE '[^s][^y][^s]%' werden möglicherweise nicht immer die gleichen Namen gefunden. Anstelle von 19 Namen werden möglicherweise nur 14 angezeigt, da Namen, die mit s beginnen oder deren zweiter Buchstabe y oder deren dritter Buchstabe s ist, aus dem Resultset ebenso entfernt werden wie die Namen der Systemtabellen. Grund dafür ist die schrittweise Auswertung von Musterzeichenfolgen mit negativen Platzhalterzeichen - es wird Platzhalter für Platzhalter ausgewertet. Wenn der Vergleich an einem beliebigen Punkt der Auswertung fehlschlägt, wird das entsprechende Objekt aus dem Resultset entfernt. Verwenden von Platzhalterzeichen als Literale Platzhalterzeichen können auch als Literalzeichen verwendet werden. Um ein Platzhalterzeichen als Literalzeichen zu verwenden, schließen Sie das Platzhalterzeichen in Klammern ein. Die folgende Tabelle enthält einige Beispiele für die Verwendung des LIKE-Schlüsselwortes und der [ ]-Platzhalterzeichen. Symbol Bedeutung LIKE '5[%]' 5% LIKE '[_]n' _n LIKE '[a-cdf]' a, b, c, d oder f LIKE '[-acdf]' -, a, c, d oder f LIKE '[ [ ]' [ LIKE ']' ] LIKE 'abc[_]d%' abc_d und abc_de LIKE 'abc[def]' abcd, abce und abcf ... (geht noch weiter) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.