search fonksiyon

Şunun için geçerlidir:evet olarak işaretlendi Databricks Runtime 19.0 ve üzerini denetleyin

Important

Bu özellik Beta sürümündedir. Çalışma alanı yöneticileri Bu özelliğe erişimi Önizlemeler sayfasından denetleyebilir. Bkz. Azure Databricks önizlemelerini yönetme.

Belirlenen hedef ifadeler içinde metin araması yapar.

searchfonksiyonun çok küçük ve hassas varyantıdırisearch, aksi takdirde aynı davranışa sahip.

Syntax

search ( expr [, ...], search_pattern [, mode => mode] )

Arguments

  • expr: İçinde arama yapılacak ifadeler.
  • search_pattern: Aranan metni gösteren sabit STRING bir ifade.
  • mode: İsteğe bağlı. Eşleştirmenin nasıl yapılacağını kontrol eden, küçük harf duyarsız STRING bir literal. Geçerli değerler: 'substring' ve 'word'. 'substring' varsayılan değerdir.

İadeler

Arama deseninin herhangi bir diziyle arananabilir hedef ifadeyle eşleşip eşleşmediğini gösteren bir BOOLEAN değer.

Notes

Modda substring , arama deseni kelimenin tam anlamıyla eşleşir. , *, ve % gibi karakterler., düzenli ifade veya joker karakter olarak özel bir anlam taşımaz.

Aşağıdaki türler diziyle aranabilir:

Türü Diziyle aranabilir
VOID, STRING, VARIANT Her zaman.
ARRAY Çocuk ifadesi dize arananabilir.
MAP Değer ifadesi diziyle aranabilir.
STRUCT En az bir alan ifadesi diziyle aranabilir.

İfadeler için STRUCT , search diziyle aranmayan alanları görmezden gelir.

İfadeler için VARIANT , search yalnızca veya tipli VOIDSTRINGyaprak düğümlerini tarar.

Bu ifade search ifadelere dolaylı olarak ifade dışıSTRINGSTRING ifade oluşturmaz.

Getiri değeri şu şekilde belirlenir:

  • NULL Arama deseni ise NULL.
  • true arama deseni en az bir dize aranabilir değerle eşleşiyorsa.
  • NULL Arama deseni herhangi bir dize aranabilir değerle eşleşmiyorsa ve bu değerlerden en az biri ise NULL.
  • false Arama deseni herhangi bir diziyle arananabilir değerle eşleşmiyorsa ve bu değerlerin hiçbiri değilse NULL.

Mod için aşağıdaki değerler desteklenmektedir:

  • 'substring': Arama deseni hedef değer içinde herhangi bir yerde görünürse eşleşir. Bu varsayılan seçenektir.
  • 'word': Arama deseni UAX#29 kelime sınırlarında kelimelere bölünür. Mod, arama desenindeki kelimelerle sıralarından bağımsız olarak eşleşir. Her desen kelimesi, UAX#29 kelime sınırları hemen önünde ve sonrasında görünürse bir dize arananabilir değerle eşleşir. Kelime içermeyen bir desen, örneğin '!!!' veya ' ', yükseltmektedir SEARCH_INVALID_WORD_PATTERN.

Masadaki performans, search önceden oluşturulmuş tam metin arama indeksinden faydalanabilir. Detaylar için Unity Kataloğu yönetilen tablolardaki tam metin arama indekslerine bakınız.

Yaygın hata koşulları

Examples

-- Basic examples.

-- Substring mode (default).
> SELECT search(column, 'needle', mode => 'substring') FROM VALUES ('Needle') AS table(column);
 false

> SELECT search(column, 'quick fox', mode => 'substring') FROM VALUES ('quick brown fox') AS table(column);
 false

> SELECT search(column, 'foo.bar', mode => 'substring') FROM VALUES ('prefix foo.bar suffix') AS table(column);
 true -- the period is matched literally.

> SELECT search(column, 'foo.bar', mode => 'substring') FROM VALUES ('prefix fooXbar suffix') AS table(column);
 false -- the period does not match an arbitrary character.

> SELECT search(column, '100%', mode => 'substring') FROM VALUES ('100 percent'), ('100%') AS table(column);
 false
 true -- the percent sign is not a wildcard.

> SELECT search(column, lower('NEEDLE')) FROM VALUES ('needle') AS table(column);
 true

-- Word mode.
> SELECT search(column, 'fox quick', mode => 'word') FROM VALUES ('quick brown fox') AS table(column);
 true

> SELECT search(column, 'slow fox', mode => 'word') FROM VALUES ('quick fox') AS table(column);
 false

> SELECT search(column, 'foo*bar', mode => 'word') FROM VALUES ('bar and foo') AS table(column);
 true -- the asterisk separates the pattern words; it is not a wildcard.

-- Examples on a table with a VARIANT column.
> CREATE TABLE test_table AS
    SELECT parse_json('{
      "role": "user",
      "id": 101,
      "preferences": {"theme": "dark", "language": "en"}
    }') AS column;

> SELECT search(column, 'user', mode => 'substring') FROM test_table;
 true

> SELECT search(column, 'preferences', mode => 'substring') FROM test_table;
 false -- only values are searched.

> SELECT search(column, '101', mode => 'substring') FROM test_table;
 false -- no implicit cast to string.

-- NULL behavior.
> SELECT search(NULL, 'needle', mode => 'substring');
 NULL

> SELECT search(CAST(NULL AS STRING), 'needle', mode => 'substring');
 NULL

> SELECT search(CAST(NULL AS INT), 'needle', mode => 'substring');
 false

> SELECT search('needle in haystack', NULL, mode => 'substring');
 NULL

-- Search across multiple columns.
> SELECT search(column1, column2, '123', mode => 'substring')
    FROM VALUES (123, 'needle in haystack') AS table(column1, column2);
 false -- integer column is skipped, no implicit cast to string.

> SELECT search(column1, column2, 'needle', mode => 'substring')
    FROM VALUES (123, 'needle in haystack') AS table(column1, column2);
 true