1

假设我有下表

成员表

ID (1 letter + 5 digits) | Name | Type

我有以下记录

A00000 | Peter | A 
B00001 | Amy   | B 
C00002 | Susan | A
...

现在我需要根据以下条件更新所有 ID:

  1. 一切从00-
  2. 然后根据会员类型附带 2 位数字
  3. 然后加回除第一个字母外的原始ID

会员类型数字映射

A -> 00 
B -> 01 
C -> 02 

以下是我想在更新后拥有的数据

00-0000000 | Peter | A 
00-0100001 | Amy   | B 
00-0000002 | Susan | A

假设映射只有一个文档引用,即。没有存储映射详细信息的表。

任何建议的更新声明?感谢帮助。

4

2 回答 2

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))

其他数据库的语法会略有不同,但基本思想应该是一样的。

于 2013-08-16T04:40:27.920 回答
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

SQL 小提琴演示

于 2013-08-16T04:42:01.240 回答