本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
模式比對條件
模式比對運算子會依據條件表達式中所指定的模式,來搜尋字串,並根據是否找到符合的結果,傳回 true 或 false。Amazon Redshift 使用三種方法進行模式比對:
-
LIKE 表達式
LIKE 運算子會利用模式 (此模式使用萬用字元
%
(百分比) 和_
(底線)) 來比較字串表達式 (例如資料欄的名稱)。LIKE 模式比對的範圍一律涵蓋整個字串。LIKE 會進行區分大小寫的比對,ILIKE 則會進行不區分大小寫的比對。 -
SIMILAR TO 規則表達式
SIMILAR TO 運算子會利用 SQL 標準規則表達式的模式,來比對字串表達式,此模式包含一組模式比對中繼字元,其中包括 LIKE 運算子所支援的兩個字元。SIMILAR TO 會比對整個字串,並進行區分大小寫的比對。
-
POSIX 樣式規則表達式
POSIX 規則表達式提供了更強大的方法,來進行 LIKE 和 SIMILAR TO 運算子以外的模式比對。POSIX 規則表達式可比對字串的任何部分,並進行區分大小寫的比對。
使用 SIMILAR TO 或 POSIX 運算子進行的規則表達式比對,其運算成本非常昂貴。我們建議盡可能使用 LIKE,尤其是在處理極為龐大的列數時。例如,下列的查詢在功能上相同,但相較於使用規則運算式的查詢,使用 LIKE 的查詢,其執行速度快上好幾倍:
select count(*) from event where eventname SIMILAR TO '%(Ring|Die)%'; select count(*) from event where eventname LIKE '%Ring%' OR eventname LIKE '%Die%';