Sql 将自动生成的值插入到具有特定模式的列中
我有一个名为Sql 将自动生成的值插入到具有特定模式的列中,sql,sql-server,Sql,Sql Server,我有一个名为tblSample的表,其中有ID、PID等列。我想用特定的模式自动生成这两列 例如: ID-PID ------ ------ ABC001 PAB001 ABC002 PAB002 ABC003 PAB003 ABC004 PAB004 | | | | ABC999 PAB999 如您所见,ID中的模式“ABC”和PID中的模式“PAB”是相同的。如何将这些记录自动插入表中,且“ABC”或“PAB”后的三位数字之间的范围为001-999?我的建
tblSample
的表,其中有ID
、PID
等列。我想用特定的模式自动生成这两列
例如:
ID-PID
------ ------
ABC001 PAB001
ABC002 PAB002
ABC003 PAB003
ABC004 PAB004
| |
| |
ABC999 PAB999
如您所见,
ID
中的模式“ABC”和PID
中的模式“PAB”是相同的。如何将这些记录自动插入表中,且“ABC”或“PAB”后的三位数字之间的范围为001-999?我的建议是创建如下表结构,其中一个标识列为testID,另一个通过使用该列ID和PID计算:
CREATE TABLE #tmpOne(testID INT IDENTITY (1,1),
ID AS ('ABC'+ (CASE WHEN len(testID) <=3 THEN CAST(RIGHT(0.001*testID, 3) AS VARCHAR) ELSE CAST(testID AS VARCHAR) END)),
Ename VARCHAR(20))
INSERT INTO #tmpOne(Ename)
SELECT 'Test'
SELECT * FROM #tmpOne
CREATE TABLE#tmpOne(testID INT IDENTITY(1,1)),
ID AS('ABC'+(len(testID)时的情况)我的建议是创建如下表结构,其中一个标识列作为testID,另一个通过使用该列ID和PID进行计算:
CREATE TABLE #tmpOne(testID INT IDENTITY (1,1),
ID AS ('ABC'+ (CASE WHEN len(testID) <=3 THEN CAST(RIGHT(0.001*testID, 3) AS VARCHAR) ELSE CAST(testID AS VARCHAR) END)),
Ename VARCHAR(20))
INSERT INTO #tmpOne(Ename)
SELECT 'Test'
SELECT * FROM #tmpOne
CREATE TABLE#tmpOne(testID INT IDENTITY(1,1)),
ID AS('ABC'+(len(testID)工作时的情况)谢谢看@Suraz给出的答案非常简单感谢看@Suraz给出的答案非常简单