假设我有下表
MemberTable
ID (1 letter + 5 digits) | Name | Type
我有以下记录
A00000 | Peter | A
B00001 | Amy | B
C00002 | Susan | A
...
现在我需要根据以下标准更新所有ID:
00-
会员类型数字映射
A -> 00
B -> 01
C -> 02
以下是我认为更新后的数据
00-0000000 | Peter | A
00-0100001 | Amy | B
00-0000002 | Susan | A
假设映射只是文档引用,即。没有表存储映射详细信息。
是否有任何建议的更新声明?谢谢你的帮助。
答案 0 :(得分:3)
您没有指定哪个DBMS,这是MySQL答案:
update MemberTable
set id = concat('00-',
case Type
when 'A' then '00'
when 'B' then '01'
when 'C' then '02'
end,
substr(id, 2))
其他数据库的语法略有不同,但基本思路应该相同。
答案 1 :(得分:1)
假设您使用的是SQL Server,可以尝试使用
DECLARE @Table TABLE(
ID VARCHAR(20),
[Type] VARCHAR(20)
)
INSERT INTO @Table VALUES ('A00000','A'),('B00001','B'),('C00002','A')
SELECT *,
'00-' +
CASE
[Type]
WHEN 'A' THEN '00'
WHEN 'B' THEN '01'
WHEN 'C' THEN '02'
END +
SUBSTRING(ID,2,LEN(ID)-1)
FROM @Table