【发布时间】:2023-03-06 03:01:01
【问题描述】:
鉴于这个简单的表格fiddle
CREATE TABLE tbl (
tbl_id serial PRIMARY KEY,
column_a text NOT NULL,
isactive bool NOT NULL
);
INSERT INTO tbl VALUES
(1, 'a', true)
, (2, 'b', true)
, (3, 'c', false);
我看到一个用户使用这个 case 语句来抑制参数
SELECT
tbl_id,
column_a,
isactive
FROM tbl
WHERE CASE WHEN $1 IS NOT NULL THEN isactive = $1 ELSE 1=1 end AND
CASE WHEN $2 IS NOT NULL THEN column_a = $2 ELSE 1=1 end
我会建议他们使用这种语法
SELECT
tbl_id,
column_a,
isactive
FROM tbl
WHERE ($1 IS NULL OR isactive = $1) and
($2 IS NULL OR column_a = $2)
我认为这些是等效的(并且可能更易于阅读)。你会做点不一样的吗?
【问题讨论】:
标签: postgresql null