CREATE TABLE #Agency
(
AgencyID int PRimary KEY IDENTITY(1,1),
AgencyName varchar(100),
AgencyCode varchar(50)
)
我要生成一個獨特的機構代碼,同時插入到表...機構應的代碼只包含字母,數字..no或特殊的人物
謝謝
CREATE TABLE #Agency
(
AgencyID int PRimary KEY IDENTITY(1,1),
AgencyName varchar(100),
AgencyCode varchar(50)
)
我要生成一個獨特的機構代碼,同時插入到表...機構應的代碼只包含字母,數字..no或特殊的人物
謝謝
你可以做您鑄造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(「表名」)來獲取插入身份列的值。
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')
;
創建可轉換您的號碼串和/或計算列可能是用漂亮的功能。
DEMO using function and computed columns
編輯:
DEMO with updated request to make at least 5 string long character
我建議你生成的應用程序的字符串。這樣,您可以使用比T-SQL更適合程序代碼的語言。無論如何,如果可能的話,保持邏輯脫離SQL Server是最佳實踐。
是否有必要避免數字或特殊字符?如果這是可以接受的,你可以使用NEWID()函數爲你生成一個GUID。詳情在這裏:http://www.dailycoding.com/Posts/generate_new_guid_uniqueidentifier_in_sql_server.aspx – havardhu 2013-04-25 10:41:21
這聽起來像你正在數據庫中生成一個自然的關鍵。後來可能會變成一堆蠕蟲。 – 2013-04-25 11:26:16
是的..我知道GUID選項..但它只是強制性的只採用字母.. – SQL006 2013-04-25 11:52:57