我有一张桌子
CREATE TABLE #Agency
(
AgencyID int PRimary KEY IDENTITY(1,1),
AgencyName varchar(100),
AgencyCode varchar(50)
)
我想在插入表格时生成一个唯一的机构代码...机构代码应该只包含字母..没有数字或特殊字符
谢谢
我有一张桌子
CREATE TABLE #Agency
(
AgencyID int PRimary KEY IDENTITY(1,1),
AgencyName varchar(100),
AgencyCode varchar(50)
)
我想在插入表格时生成一个唯一的机构代码...机构代码应该只包含字母..没有数字或特殊字符
谢谢
您可以做一些简单的事情,例如将您的 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')
;
创建一个将您的数字转换为字符串和/或计算列的函数可能更适合使用。
编辑:
我建议您在应用程序中生成字符串。这样,您就可以使用比 T-SQL 更适合过程代码的语言。无论如何,最好的做法是尽可能将逻辑排除在 SQL Server 之外。