PostgreSQL三元判断
在 PostgreSQL 中,三元表达式是一种很常用的条件语句,用于根据条件判断返回不同的值。三元表达式的语法如下:
expression1 ? expression2 : expression3
其中 expression1
是一个条件表达式,如果条件为真,则返回 expression2
的值,否则返回 expression3
的值。
在 PostgreSQL 中,三元判断运算符 ?
和 :
都是可选的,如果不使用运算符,则可以使用 CASE WHEN THEN ELSE END
来实现三元判断。
使用三元表达式
下面通过几个示例来演示如何在 PostgreSQL 中使用三元表达式进行判断。
示例1:使用三元表达式判断字符串是否包含指定子串
SELECT text,
text ? 'geek' ? 'docs.com' ? 'Yes' : 'No' AS contains_geek_docs
FROM (VALUES ('Welcome to geek-docs.com'),
('This is a test string'),
('PostgreSQL is cool')) AS t(text);
运行结果:
text | contains_geek_docs
------------------------+-------------------
Welcome to geek-docs.com| Yes
This is a test string | No
PostgreSQL is cool | No
在上面的示例中,我们使用了三元表达式 text ? 'geek' ? 'docs.com' ? 'Yes' : 'No'
来判断文本中是否包含 geek-docs.com
,如果包含则返回 Yes
,否则返回 No
。
示例2:使用 CASE WHEN 实现三元判断
SELECT text,
CASE WHEN text ~ 'geek-docs.com' THEN 'Yes' ELSE 'No' END AS contains_geek_docs
FROM (VALUES ('Welcome to geek-docs.com'),
('This is a test string'),
('PostgreSQL is cool')) AS t(text);
运行结果:
text | contains_geek_docs
------------------------+-------------------
Welcome to geek-docs.com| Yes
This is a test string | No
PostgreSQL is cool | No
在这个示例中,我们使用了 CASE WHEN
语句来实现三元判断,判断文本中是否包含 geek-docs.com
,如果包含则返回 Yes
,否则返回 No
。
总结
三元表达式是一个非常常用的条件判断语句,在 PostgreSQL 中可以通过三元表达式 ?
和 :
实现简洁的条件判断。除了三元表达式,还可以使用 CASE WHEN
语句来实现类似的功能。无论是使用哪种方式,都可以根据条件返回不同的值,从而实现灵活的数据处理和查询操作。