如何找到 MA 并将其变成马萨诸塞州并放入名为州名的列中

How To Find MA and Turn it into Massachusetts and put into column called state name

对于我的 class,我们有一个 table,其中各州被列为其缩写,我需要列出全州名称和缩写,但我不确定如何获得 MA到马萨诸塞州。我不确定我会用什么来将它转化为我需要的东西。任何帮助都会非常感谢! 它是包含 ZIP、CITY、STATE 的全部 table。

您可以尝试如下的 case 语句(假设您没有完整版本的专栏):

SELECT CASE WHEN state = 'MA' THEN 'Massachusets' END AS state_name 
FROM table_name

应该还有另一个 table,其中包含缩写和全名。然后你会 加入 那些 table。例如:

create table full_state
  (state             varchar2(2)   constraint pk_fullstat primary key,
   full_state_name   varchar2(50)  not null
  );

insert into full_state (state, full_state_name) 
  select 'AL', 'Alabama' from dual union all
  select 'AK', 'Alaska'  from dual union all
  ...
  select 'WY', 'Wyoming' from dual;

然后你

select s.zip, s.city, s.state, t.full_state_name
from state s join full_state t on t.state = s.state;

另一种选择是“硬编码”这些名称(但这很可能是错误的)。您可以为此使用 CASEDECODE

select s.zip, s.city, s.state,
  case when s.state = 'AL' then 'Alabama'
       when s.state = 'AK' then 'Alaska'
       ...
       when s.state = 'MA' then 'Massachusets'
       ...
       when s.state = 'WY' then 'Wyoming'
  end as full_state_name
from state s

select s.zip, s.city, s.state,
  decode(s.state, 'AL', 'Alabama', 
                  'AK', 'Alaska', 
                  ...
                  'WY', 'Wyoming'
        ) as full_state_name
from state s

如您所见,此选项很糟糕,因为它要求您在所有查询中指定所有州,每次您要获取完整的州名称时。因此 - 为州创建一个新的 table。