Postgresql
根據條件語句設置列值
我想根據以下條件向新列添加值:如果 board_stage 小於 alight_stage 則 service_direction 等於 1,表示入站;如果不是,則 service_direction 等於 0,表示 Outbound。
我嘗試過的程式碼如下。主要問題是它在 CASE 語句之前不斷返回語法錯誤。我也玩過 WHERE 和 IF 語句。但是,這會在相同位置返回相同的語法錯誤,即就在條件語句之前。
有小費嗎?非常感謝
ALTER TABLE smartcardtable ADD service_direction boolean; UPDATE smartcardtable SET service_direction CASE board_stage < alight_stage THEN service_direction = '1' ELSE '0' END;
正確的語法是:
UPDATE <table_name> SET <column_name> = <expression> ;
其他小的改進:
- case 表達式也需要
CASE WHEN <boolean_expression> ...
- 更新的列是布爾值,因此您應該輸出 TRUE 或 FALSE(它將與 1 和 0 一起使用,但沒有比您的程式碼清晰更好的了)。
在你的情況下:
UPDATE smartcardtable SET service_direction = CASE WHEN board_stage < alight_stage THEN TRUE ELSE FALSE END ;
如果另外兩列 (
board_stage
和alight_stage
) 不可為空,則可以用更簡單的布爾表達式替換 case 表達式(括號僅為了清楚起見):UPDATE smartcardtable SET service_direction = (board_stage < alight_stage) ;