数据库更新SQL

时间:2013-08-16 04:34:48

标签: sql sql-server sql-update

假设我有下表

MemberTable

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

我有以下记录

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

现在我需要根据以下标准更新所有ID:

  1. 全部以00-
  2. 开头
  3. 然后根据会员类型
  4. 提供2位数字
  5. 然后添加除第一个字母
  6. 之外的原始ID

    会员类型数字映射

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

    以下是我认为更新后的数据

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

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

    是否有任何建议的更新声明?谢谢你的帮助。

2 个答案:

答案 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

SQL Fiddle DEMO