1

我有一张桌子

CREATE TABLE #Agency 
 (
  AgencyID int PRimary KEY IDENTITY(1,1),
  AgencyName varchar(100), 
  AgencyCode varchar(50)
  )

我想在插入表格时生成一个唯一的机构代码...机构代码应该只包含字母..没有数字或特殊字符

谢谢

4

2 回答 2

3

您可以做一些简单的事情,例如将您的 ID 转换为 varchar 并用字母(或组合)替换每个数字。

1=A,2=B,等等。

因此,只要您的 ID 是唯一的,代码也将是唯一的。

片段可能是这样的:

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    CAST(AgencyID AS VARCHAR(50))
    ,'1','A'),'2','B'),'3','C'),'4','D'),'5','E'),'6','F'),'7','G'),'8','H'),'9','I'),'0','J')

如果要在插入期间执行此操作,可以使用 IDENT_CURRENT('tablename') 获取为标识列插入的值。

      INSERT INTO Agency (AgencyName, AgencyCode)
    SELECT 'Name001', 
              REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
              CAST(IDENT_CURRENT('Agency') AS VARCHAR(50))
              ,'1','A'),'2','B'),'3','C'),'4','D'),'5','E'),'6','F'),'7','G'),'8','H'),'9','I'),'0','J')

;

SQLFiddle 演示

创建一个将您的数字转换为字符串和/或计算列的函数可能更适合使用。

使用函数和计算列的演示

编辑:

带有更新请求以生成至少 5 个字符串长字符的 DEMO

于 2013-04-25T10:56:33.127 回答
1

我建议您在应用程序中生成字符串。这样,您就可以使用比 T-SQL 更适合过程代码的语言。无论如何,最好的做法是尽可能将逻辑排除在 SQL Server 之外。

于 2013-04-25T11:01:08.850 回答