2010-10-12 95 views
1

我目前正在使用我的老師的一些舊的Postgres SQL代碼並修改它以匹配我需要的內容。但是,有一段代碼似乎無法在網上找到解釋。在代碼中,他有一個使用~~ *的case語句,看起來像是一個比較。我不熟悉這種語法,並會非常感謝任何幫助。提前致謝。Postgres案例陳述

CASE 
     WHEN sessions.status ~~* 'data%finder%'::text THEN ((sessions.minutes_in_data_ || ' ('::text) || sessions.minutes_in_idle) || ')'::text 
     WHEN sessions.status ~~* 'text%edit%'::text THEN ((sessions.minutes_in_text_editor || ' ('::text) || sessions.minutes_in_idle) || ')'::text 
     WHEN sessions.status ~~* 'admin%module%'::text AND sessions.minutes_in_module<> 0 THEN ((sessions.minutes_in_module|| ' ('::text) || sessions.minutes_in_idle) || ')'::text 
     WHEN sessions.status ~~* 'client%module%'::text AND sessions.minutes_in_module<> 0 THEN ((sessions.minutes_in_module|| ' ('::text) || sessions.minutes_in_idle) || ')'::text 
     ELSE NULL::text 
    END AS "Duration (Idle)", 

回答

3

它們等同like/ilike

documentation

操作符~~等效於LIKE, 而~~ *對應ILIKE。 也分別代表不相似和不相等, 分別代表不相似和不相等, 。所有這些運營商 都是特定於PostgreSQL的。

+0

檢查此鏈接http://www.postgresql.org/docs/9.0/interactive/functions-matching.html – Kuberchaun 2010-10-12 15:07:47