pgsql中set里面用case
时间: 2024-04-27 20:21:53 浏览: 4
在 PostgreSQL 中,可以在 SET 子句中使用 CASE 表达式来根据条件设置列的值。
例如,假设我们有一个名为 users 的表,其中包含 id、name 和 age 列。我们想要根据年龄设置每个用户的状态,如果年龄小于 18 岁,则状态为 "未成年",否则状态为 "成年"。可以使用以下语句:
```
UPDATE users
SET status = CASE
WHEN age < 18 THEN '未成年'
ELSE '成年'
END;
```
这个语句中,我们使用 CASE 表达式根据 age 列的值设置 status 列的值。如果 age 小于 18,则设置为 "未成年",否则设置为 "成年"。注意,CASE 表达式需要以 END 结尾。
如果我们想要根据其他列的值设置 status 列的值,可以在 WHEN 子句中添加其他条件,并在 ELSE 子句中指定默认值。例如,如果我们想要根据 name 列的值设置 status 列的值,可以使用以下语句:
```
UPDATE users
SET status = CASE
WHEN name LIKE '张%' THEN '张家人'
WHEN name LIKE '李%' THEN '李家人'
ELSE '其他'
END;
```
这个语句中,我们使用 CASE 表达式根据 name 列的值设置 status 列的值。如果 name 以 "张" 开头,则设置为 "张家人",如果 name 以 "李" 开头,则设置为 "李家人",否则设置为 "其他"。
相关问题
pgsql中setof
在 PostgreSQL 中,`SETOF` 是一个返回一个集合的函数的返回类型。它表示函数返回一个由多个行组成的集合,而不是单个标量值。可以将其与 `RETURNS TABLE` 类型一起使用。
例如,以下是一个返回一个整数集合的函数定义:
```sql
CREATE FUNCTION my_int_set()
RETURNS SETOF integer
AS $$
BEGIN
RETURN QUERY SELECT generate_series(1, 10);
END;
$$ LANGUAGE plpgsql;
```
在这个例子中,`SETOF integer` 声明了该函数返回一个整数集合。`RETURN QUERY` 语句用于返回从 1 到 10 的整数序列。
调用该函数将返回一个整数集合,如下所示:
```sql
SELECT * FROM my_int_set();
```
输出结果:
```
my_int_set
------------
1
2
3
4
5
6
7
8
9
10
(10 rows)
```
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语句中使用,用于根据条件返回不同的结果列。