LIKE - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

LIKE

LIKE 運算子會比較字串表達式,例如資料欄名稱,以及使用萬用字元 % (百分比) 和 _ (底線) 的模式。LIKE 模式比對一律會涵蓋整個字串。若要比對字串中任意位置的序列,模式必須以百分比符號開頭和結尾。

LIKE 區分大小寫;區分ILIKE大小寫。

語法

expression [ NOT ] LIKE | ILIKE pattern [ ESCAPE 'escape_char' ]

引數

運算式

有效的 UTF-8 字元表達式,例如資料欄名稱。

LIKE | ILIKE

LIKE 會執行區分大小寫的模式比對。ILIKE 會針對單位元組 UTF-8 (ASCII) 字元執行不區分大小寫的模式比對。若要針對多位元組字元執行不區分大小寫的模式比對,請在 運算式模式上使用 LOWER函數,並具有 LIKE條件。

與比較述詞相反,例如 = 和 <>,述LIKEILIKE詞不會隱含地忽略尾端空格。若要忽略尾端空格,請使用 RTRIM或明確地將資料CHAR欄轉換為 VARCHAR。

~~ 運算子等於 LIKE,而 ~~* 等於 ILIKE。!~~!~~*運算子也相當於 NOTLIKE和 NOT ILIKE。

pattern

具有要比對之模式的有效 UTF-8 字元表達式。

escape_char

字元表達式,將會用來逸出模式中的中繼字元。預設值為兩個反斜線 (「\\」)。

如果模式不包含元字元,則模式僅代表字串本身;在這種情況下,其LIKE作用與等於運算子相同。

其中一個字元表達式可以是 CHAR或 VARCHAR 資料類型。如果不同,Amazon Redshift 會將 pattern 轉換為 expression 的資料類型。

LIKE 支援下列模式比對中繼字元:

運算子 描述
% 比對任何 0 的序列或更多字元。
_ 比對任一個單一字元。

範例

下表顯示使用 比對模式的範例LIKE:

表達式 傳回值
'abc' LIKE 'abc' True
'abc' LIKE 'a%' True
'abc' LIKE '_B_' False
'abc' ILIKE '_B_' True
'abc' LIKE 'c%' False

下列範例會找出名稱以「E」開頭的所有城市:

select distinct city from users where city like 'E%' order by city; city --------------- East Hartford East Lansing East Rutherford East St. Louis Easthampton Easton Eatontown Eau Claire ...

下列範例會找出姓氏中包含「ten」的使用者:

select distinct lastname from users where lastname like '%ten%' order by lastname; lastname ------------- Christensen Wooten ...

以下範例示範如何比對多個模式。

select distinct lastname from tickit.users where lastname like 'Chris%' or lastname like '%Wooten' order by lastname; lastname ------------- Christensen Christian Wooten ...

下列範例會找出名稱中第 3 個和第 4 個字元為「ea」的城市。命令使用 ILIKE來示範不敏感案例:

select distinct city from users where city ilike '__EA%' order by city; city ------------- Brea Clearwater Great Falls Ocean City Olean Wheaton (6 rows)

下列的範例使用預設的逸出字串 (\\),來搜尋包含「_」的字串 (文字 start 後跟底線 _):

select tablename, "column" from pg_table_def where "column" like '%start\\_%' limit 5; tablename | column -------------------+--------------- stl_s3client | start_time stl_tr_conflict | xact_start_ts stl_undone | undo_start_ts stl_unload_log | start_time stl_vacuum_detail | start_row (5 rows)

下列的範例將「^」指定為逸出字元,然後使用該逸出字元來搜尋包含「_」的字串 (文字 start 後跟底線 _):

select tablename, "column" from pg_table_def where "column" like '%start^_%' escape '^' limit 5; tablename | column -------------------+--------------- stl_s3client | start_time stl_tr_conflict | xact_start_ts stl_undone | undo_start_ts stl_unload_log | start_time stl_vacuum_detail | start_row (5 rows)

下列範例使用~~*運算子對以「Ag」開頭的城市進行不區分大小寫 (ILIKE) 搜尋。

select distinct city from users where city ~~* 'Ag%' order by city; city ------------ Agat Agawam Agoura Hills Aguadilla