Postgresql
如何基於 SELECT 編寫 Postgres “if”?
如果我在 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 ...)