在我的SQL Server 2012数据库中,我有一个包含两列的表,但它们的值太长,无法运行算法。
两列的值是另一个相互连接的表的ID,如
A | B, B | C, D | A
我想在同一个表上使用较短的值创建另外两列。我怎么能这样做?
基本上,我想翻译像
这样的东西1234567890 | 0987654321, 0987654321 | 5432167890
进入
1 | 2, 2 | 3每行
。
答案 0 :(得分:0)
您可能必须使用游标操作来执行此操作,以确保每个新主键和外键都相同。
答案 1 :(得分:0)
您可以使用“光标”对象翻译数据。
答案 2 :(得分:0)
您可以使用CTE将这些分成表格
Declare @t table(ID INT IDENTITY , data varchar(max)) Insert into @t Select '1234567890' ;with cte as ( select ID, substring(data, 1, 1) as Chars, stuff(data, 1, 1, '') as data, 1 as RowID from @t union all select ID, substring(data, 1, 1) as Chars, stuff(data, 1, 1, '') as data, RowID + 1 as RowID from cte where len(data) > 0 ) select Chars from cte order by ID, RowID
然后,您需要在另一列中创建一个表达式,该表达式可以添加或增加当前行中的当前值。