Sql 如何找到MA并将其转换为马萨诸塞州,并将其放入名为“州名”的列中
对于我的班级,我们有一个表格,其中各州被列为它们的缩写,我需要列出完整的州名和缩写,但我不确定如何让MA到马萨诸塞州。我不确定我会用什么把它变成我需要的东西。任何帮助都很好,谢谢!Sql 如何找到MA并将其转换为马萨诸塞州,并将其放入名为“州名”的列中,sql,oracle-sqldeveloper,Sql,Oracle Sqldeveloper,对于我的班级,我们有一个表格,其中各州被列为它们的缩写,我需要列出完整的州名和缩写,但我不确定如何让MA到马萨诸塞州。我不确定我会用什么把它变成我需要的东西。任何帮助都很好,谢谢! 这是一个包含ZIP、CITY、STATE的表。您可以尝试以下case语句(假设您没有包含完整版本的列): 应该有另一个包含缩写和全名的表格。然后您将加入这些表。例如: create table full_state (state varchar2(2) constraint pk_fu
这是一个包含ZIP、CITY、STATE的表。您可以尝试以下case语句(假设您没有包含完整版本的列):
应该有另一个包含缩写和全名的表格。然后您将加入这些表。例如:
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;
另一种选择是“硬编码”这些名称(但这很可能是错误的)。您可以使用
大小写
或解码
:
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,
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