Postgresql
postgres 簡單數字到字元串的映射
我
Enum
在程式語言級別有一個,它作為一個簡單的整數儲存在表上。思考:APPLE = 1 GOOGLE = 2 MSFT = 3 AMAZON = 4 ... (100s more)
我只想查詢表,而不是數字返回相應的字元串值。有沒有更簡單的方法可以在不使用
case
語句或臨時表的情況下執行此操作:SELECT CASE WHEN type = 1 THEN "APPLE" CASE WHEN type = 2 THEN "GOOGLE" CASE WHEN type = 3 THEN "MSFT" CASE WHEN type = 4 THEN "AMAZON" ... ELSE "UNKNOWN" FROM t
基本上,它只是字典中的鍵查找。
恕我直言,最簡單的方法是使用查找表。
create table lk (id int, name text); insert into lk values (1, 'apple'),(2, 'google'),(3, 'msft'),(4, 'amazon'); create table t (id serial, lk int); insert into t (lk) values (2),(1),(3),(4); select t.id, lk.name from t join lk on lk.id = t.lk;
編號 | 姓名 -: | :----- 2 | 蘋果 1 | Google 3 | 微軟 4 | 亞馬遜
db<>在這裡擺弄
好吧,使用@McNets 的回答我使用
with
了沒有臨時表的子句:create table t (id serial, lk int); insert into t (lk) values (2),(1),(3),(4); with m (k, v) as (values (1, 'apple'),(2, 'google'),(3, 'msft'),(4, 'amazon')) select t.id, m.v from t join m on m.k = t.lk;