Postgresql

如何基於 SELECT 編寫 Postgres “if”?

  • July 11, 2022

如果我在 PostgreSQL 中有一個函式,我可以username像這樣驗證它的參數(例如一個參數):

IF LENGTH(username) < 4 THEN
   RAISE EXCEPTION 'Usernames must contain at least four characters';
END IF;

我想不通的是如何對 SELECT 查詢的結果做同樣的事情,即。就像是:

IF LENGTH(SELECT * FROM USERS WHERE username=username) > 1 THEN
   RAISE EXCEPTION 'Username already exists';
END IF;

(是的,我知道 PostgreSQL 會在沒有那行的情況下給我一個錯誤,但我想要一個更友好的錯誤消息。)

在(Postgre)SQL中是否可能出現類似的情況,如果可以,有人可以指出我可以查看的語法(或它的範例)嗎?

是的,這是可能的,但是子查詢需要一對額外的括號:

length((SELECT col FROM users WHERE ...))

一對括號用於子查詢,一對用於函式呼叫。

寫這個的更易讀的方式是

(SELECT length(col) FROM users WHERE ...)

引用自:https://dba.stackexchange.com/questions/314243