PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

cách tránh cột trong mệnh đề 'where' nếu tham số là 'NOT PASSED' postgresql

Không rõ ý bạn là gì khi được thông qua , nhưng có thể ý bạn là $3 là một tham số tùy chọn, với $3 nghĩa vắng mặt: không quan tâm ?

SELECT *
FROM employee
WHERE name = $1
AND age = $2
AND ( $3 IS NULL OR salary = $3)
   ;

Một số dữ liệu:

CREATE TABLE employee
        ( name varchar NOT NULL PRIMARY KEY
        , age integer
        , salary integer
        );

INSERT INTO employee ( name , age , salary ) VALUES
 ( 'Alice' , 13 , 3 )
,( 'Bob' , 11 , 5 )
,( 'Charlotte' , 15 , 9 )
,( 'David' , 17 , 10 )
        ;

Giống như một truy vấn đã chuẩn bị:

PREPARE qry (text, integer , integer) AS
SELECT *
FROM employee
WHERE name = $1
AND age = $2
AND ( $3 IS NULL OR salary = $3)
   ;

    -- and call the prepared statement:
EXECUTE qry ('Alice', 13, 3);
EXECUTE qry ('Alice', 13, NULL);

Đầu ra:

CREATE TABLE
INSERT 0 4
PREPARE
 name  | age | salary 
-------+-----+--------
 Alice |  13 |      3
(1 row)

 name  | age | salary 
-------+-----+--------
 Alice |  13 |      3
(1 row)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres:xóa toàn bộ cơ sở dữ liệu trước khi tạo lại / điền lại từ tập lệnh bash

  2. Trước và sau khi kích hoạt trên cùng một sự kiện? Điền vào bảng con PostgreSQL

  3. chmod og-rwx server.key trong windows

  4. PHP và Cơ sở dữ liệu:Chế độ xem, chức năng và hiệu suất thủ tục được lưu trữ

  5. PostgreSQL 9.0 Backup &Recovery