Ein LIKE-Prädikat (like_predicate) dient zur Suche nach Zeichenketten, die ein bestimmtes Muster haben. Dieses Muster kann eine bestimmte Zeichenkette sein, eine Folge von Zeichen mit unbekannter Anzahl oder eine Menge von Zeichen mit bestimmter Anzahl.
<like_predicate> ::= <expression> [NOT] LIKE <like_expression> [ESCAPE <expression>]
<like_expression> ::= <expression> | '<pattern_element>...'
Der Ausdruck in like_expression muss einen alphanumerischen Wert oder einen Datums- oder Zeitwert liefern.
x NOT LIKE y hat das gleiche Ergebnis wie NOT(x LIKE y).
|
Ergebnis von x LIKE y |
x oder y sind NULL-Werte |
x LIKE y ist undefiniert |
x und y sind Nicht-NULL-Werte |
x LIKE y ist entweder wahr oder falsch |
x lässt sich in Teilzeichenketten zerlegen, so dass gilt: Eine Teilzeichenkette von x ist eine Folge von 0,1, oder eine Folge von mehreren benachbarten Zeichen und jedes Zeichen von x gehört genau zu einer Teilzeichenkette. Die Anzahl der Teilzeichenketten von x und y ist gleich. Das n-te Vergleichsmuster (pattern_element) von y ist eine Folge von Zeichen und die n-te Teilzeichenkette von x ist eine Folge von 0 oder mehr Zeichen. |
x LIKE y ist wahr |
Die Verwendung eines Escape-Zeichens (ESCAPE <expression>) ist dann notwendig, wenn nach <underscore> oder % oder dem hexadezimalen Wert X'1E' oder X'1F' im LIKE-Prädikat gesucht werden soll.
Wenn ESCAPE <expression> angegeben wird, muss der zugehörige Ausdruck (expression) einen alphanumerischen Wert liefern, der aus genau einem Zeichen besteht. Ist dieses Escape-Zeichen im LIKE-Ausdruck (like_expression) enthalten, so muss das darauffolgende Zeichen eines der Sonderzeichen <underscore>, %, X’1E’ oder X’1F’ sein. Dieses Sonderzeichen wird dann als für sich selbst stehendes Zeichen angesehen.
Suchen einer beliebigen Zeichenkette
mit der Minimallänge 1: LIKE '%_'
Suchen einer Zeichenkette, bei der eine feste
Anzahl von Zeichen bekannt ist: LIKE'_c_'
Suchen einer Zeichenkette mit beliebig vielen
Zeichen, wobei die Zeichenkette ein <underscore> enthalten muss:
LIKE
'%:_%'ESCAPE':'
Beispieltabelle customer
Kunden mit 'FT' am Ende des Kundennamens:
SELECT name, city FROM customer
WHERE name LIKE '%FT'
NAME |
CITY |
DATASOFT |
Dallas |
Kunden mit einem sechsstelligen Nachnamen, der mit 'P' beginnt:
SELECT name, firstname, city FROM customer
WHERE name LIKE 'P_ _ _ _ _'
NAME |
FIRSTNAME |
CITY |
Porter |
Jenny |
New York |
Porter |
Martin |
Los Angeles |
Peters |
Sally |
Los Angeles |
Porter |
Michael |
New York |
Peters |
Joseph |
Los Angeles |
Kunden mit einem 'p' ab der zweiten Stelle:
SELECT name, city FROM customer
WHERE name LIKE '_%p%'
NAME |
CITY |
Randolph |
Los Angeles |