Dela via


like operatör

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

Returnerar true om str matchar pattern med escape.

Syntax

str [ NOT ] like ( pattern [ ESCAPE escape ] )
str [ NOT ] like { ANY | SOME | ALL } ( [ pattern [, ...] ] )

Argument

  • str: Ett STRING uttryck.

  • pattern: Ett STRING uttryck.

  • escape: En teckenbeteckning STRING.

  • ANYeller SOME :ALL

    Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

    Om ALL anges like returneras true om str det matchar alla mönster, annars returneras true om det matchar minst ett mönster.

Returer

En BOOLEAN.

Mönstret är en sträng som matchas bokstavligen, med undantag för följande specialsymboler:

  • _ matchar ett tecken i indata (liknar . i posix reguljära uttryck)
  • % matchar noll eller fler tecken i indata (liknar .* i posix reguljära uttryck).

Standardutrymningstecknet '\'är . Om ett escape-tecken föregår en särskild symbol eller ett annat escape-tecken matchas följande tecken bokstavligen. Det är ogiltigt om du vill undvika andra tecken.

När du använder literaler använder du raw-literal (r prefix) för att undvika förbearbetning av escape-tecken.

str NOT like ... motsvarar NOT(str like ...).

Som definierat av SQL-standarden är LIKE alltid känsligt för avslutande blanksteg, även om sorteringen är okänslig för avslutande blanksteg. För icke-null str: str LIKE str || ' ' är alltid false.

Gäller för:kryssmarkerad ja Databricks SQL kryssmarkerad ja Databricks Runtime 17.2 och senare

Följande sortering stöds av LIKE:

  • UTF8_BINARY
  • UTF8_BINARY_RTRIM
  • UTF8_LCASE
  • UTF8_LCASE_RTRIM

För andra sorteringar använder du contains, startswitheller ends_with.

Exempel

> SELECT like('Spark', '_park');
true

> SELECT r'%SystemDrive%\Users\John' like r'%SystemDrive%\\Users%';
true

-- When not using raw literals, the escape character must be escaped.
> SELECT r'%SystemDrive%\Users\John' like '%SystemDrive%\\\\Users%';
true

> SELECT '%SystemDrive%/Users/John' like '/%SystemDrive/%//Users%' ESCAPE '/';
true

> SELECT like('Spock', '_park');
false

> SELECT 'Spark' like SOME ('_park', '_ock')
true

> SELECT 'Spark' like ALL ('_park', '_ock')
false

-- like is always trailing blank sensitive
> SELECT 'Spark' COLLATE UTF8_BINARY_RTRIM like 'Spark ';
false