2010-10-12 101 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