PGSQL where case when
时间: 2024-02-22 14:53:53 浏览: 137
在PGSQL中,WHERE CASE WHEN语句是一种条件表达,它允许根据不同的条件来选择不同的操作或返回不同的结果。它的语法如下:
```
SELECT column1, column2, ...
FROM table_name
WHERE CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END;
```
在这个语法中,condition1、condition2等是条件表达式,result1、result2等是对应条件为真时返回的结果。
下面是一个示例,假设我们有一个名为students的表,其中包含id、name和age字段。我们想要选择年龄大于18岁的学生,并根据他们的年龄分别返回不同的结果:
```
SELECT id, name,
CASE
WHEN age > 18 THEN '成年'
ELSE '未成年'
END AS age_group
FROM students;
```
这个查询将返回一个结果集,其中包含学生的id、name和age_group字段。age_group字段根据学生的年龄是否大于18岁来进行分类。
相关问题
Pgsql where 中写case when
在Pgsql中,可以使用CASE WHEN语句来在WHERE子句中进行条件判断。CASE WHEN语句允许根据条件的不同返回不同的结果。
下面是一个示例,展示了如何在WHERE子句中使用CASE WHEN语句:
```
SELECT column1, column2
FROM table
WHERE CASE
WHEN condition1 THEN column1 = value1
WHEN condition2 THEN column2 = value2
ELSE column1 = value3
END;
```
在上面的示例中,根据不同的条件,WHERE子句会返回不同的过滤条件。如果condition1为真,则使用column1 = value1作为过滤条件;如果condition2为真,则使用column2 = value2作为过滤条件;否则,使用column1 = value3作为过滤条件。
请注意,CASE WHEN语句也可以在SELECT语句中使用,用于根据条件返回不同的结果列。
pgsql用case when判断字段col中的数据是否存在连续相同的标点符号,除了空格
可以使用正则表达式来判断字段col中是否存在连续相同的标点符号,除了空格。具体的语句如下:
```
SELECT col FROM table_name WHERE col ~ '[^\s][[:punct:]]{2,}[^\s]';
```
其中,正则表达式`[^\s][[:punct:]]{2,}[^\s]`表示匹配一个非空格字符,后面是至少两个相同的标点符号,最后是一个非空格字符。如果查询结果不为空,则说明字段col中存在连续相同的标点符号,除了空格。
如果要判断是否存在任意连续相同的标点符号,包括空格,可以使用以下正则表达式:
```
SELECT col FROM table_name WHERE col ~ '[[:punct:]]{2,}';
```
其中,正则表达式`[[:punct:]]{2,}`表示匹配至少两个连续的标点符号,包括空格。如果查询结果不为空,则说明字段col中存在任意连续相同的标点符号。
阅读全文