【问题标题】:generate custom id with conditions while inserting records to sql server在将记录插入到 sql server 时生成带有条件的自定义 id
【发布时间】:2016-07-12 07:28:45
【问题描述】:

如何根据条件插入记录时生成自定义 ID?例如,我有一个donor database program,它接受来自non-alumnialumni 的捐款。来自校友的自定义 ID 应该从 A00001 开始,对于非校友来说是 N00001。需要注意的是,将插入的记录将来自另一个表,该表的记录来自一个 excel 文件。

任何帮助或澄清将不胜感激。

【问题讨论】:

    标签: sql sql-server database tsql uniqueidentifier


    【解决方案1】:

    也许是这样的?

     DECLARE @Table TABLE ( ID VARCHAR(20) );
    
    -- Non alumni
    INSERT  INTO @Table
            ( ID )
    VALUES  ( 'N00011' )
    
    INSERT  INTO @Table
            ( ID )
    VALUES  ( 'N00012' )
    
    INSERT  INTO @Table
            ( ID )
    VALUES  ( 'N00013' )
    
    -- Alumni
    INSERT  INTO @Table
            ( ID )
    VALUES  ( 'A00011' )
    
    INSERT  INTO @Table
            ( ID )
    VALUES  ( 'A00012' )
    
    INSERT  INTO @Table
            ( ID )
    VALUES  ( 'A00013' )
    
    -- Insert Alumni
    INSERT  INTO @Table
            ( ID
            )
            SELECT  'A' + RIGHT('00000'
                                + CAST(MAX(RIGHT(ID, LEN(ID) - 1)) + 1 AS VARCHAR(10)),
                                5)
            FROM    @Table
            WHERE   LEFT(ID, 1) = 'A'
    
    -- Insert Non Alumni
    INSERT  INTO @Table
            ( ID
            )
            SELECT  'N' + RIGHT('00000'
                                + CAST(MAX(RIGHT(ID, LEN(ID) - 1)) + 1 AS VARCHAR(10)),
                                5)
            FROM    @Table
            WHERE   LEFT(ID, 1) = 'N'
    

    【讨论】:

    • 我忘了告诉源表中的 id 不存在。所以 id 应该像从一个空列生成
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多