Postgres案例陈述

时间:2010-10-12 15:01:37

标签: sql postgresql

我目前正在使用我的一些老教师的旧Postgres SQL代码并对其进行修改以符合我的需要。但是,有一段代码我似乎无法在网上找到任何解释。在代码中,他有一个带有~~ *的case语句,用作看似比较的东西。我不熟悉这种语法,非常感谢任何帮助。提前谢谢。

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)",

1 个答案:

答案 0 :(得分:3)

它们相当于like / ilike

来自documentation

  

操作员~~相当于LIKE,   和~~ *对应ILIKE。那里   也是!~~和!~~ *运营商   代表不喜欢而不是ILIKE,   分别。所有这些运营商   是PostgreSQL特有的。