假设我们有一个表名Swap-Table。
*Input Table*
ID NAME Type
------------------
1 name1 a
2 name2 b
3 name3 b
我想编写一个命令来更新表。输出表将是
**Output Table**
ID NAME Type
------------------
1 name1 b
2 name2 a
3 name3 a
条件:无案例/开关
答案 0 :(得分:5)
您可以使用CTE或某种子查询来生成更新字典
WITH upd_dict (type_from, type_to) AS (
SELECT 'a', 'b'
UNION
SELECT 'b', 'a')
UPDATE table_name
SET type = ud.type_to
FROM upd_dict ud
WHERE ud.type_from = type
但如果你问,CASE在这里看起来更具可读性和可理解性。
答案 1 :(得分:1)
我只提供这种转换的“可爱”方式,而不是我在生产代码中允许(甚至推荐)的任何内容:
declare @t table (ID int not null,Name varchar(17) not null,Type varchar(3) not null)
insert into @t(ID,NAME,Type) values
(1,'name1','a'),
(2,'name2','b'),
(3,'name3','b')
update @t set Type = CHAR(195-ASCII(Type))
select * from @t
产地:
ID Name Type
----------- ----------------- ----
1 name1 b
2 name2 a
3 name3 a
(不同的数据库产品可能有不同的方式来转换/转换为ascii代码和表变量)