答案 0 :(得分:2)
试试这个解决方案。变量@tbl有测试数据,变量@result_tbl会有输出。我希望,这有帮助。
DECLARE @tbl TABLE (VALUE NVARCHAR(MAX))
DECLARE @result_tbl TABLE(agent_name NVARCHAR(100), VALUE NVARCHAR(MAX))
DECLARE @value NVARCHAR(MAX),
@agent_name NVARCHAR(100)
INSERT INTO @tbl
SELECT 'Agent1'
UNION ALL
SELECT '1'
UNION ALL
SELECT '2'
UNION ALL
SELECT '3'
UNION ALL
SELECT 'Agent2'
UNION ALL
SELECT '4'
UNION ALL
SELECT '5'
UNION ALL
SELECT 'Agent3'
UNION ALL
SELECT '6'
DECLARE cur CURSOR FOR SELECT * FROM @tbl AS T
OPEN cur
FETCH NEXT FROM cur INTO @value
WHILE @@FETCH_STATUS = 0
BEGIN
IF @value LIKE 'Agent%'
BEGIN
SET @agent_name = @value
FETCH NEXT FROM cur INTO @value
END
INSERT INTO @result_tbl
VALUES(@agent_name, @value)
FETCH NEXT FROM cur INTO @value
END
CLOSE cur
DEALLOCATE cur
SELECT * FROM @result_tbl
答案 1 :(得分:0)
您可以尝试以下
Select IDENTITY(int, 1,1) AS ident,
case IsNumeric(Agent)
when 1 then Agent
else null end ValueField,
case IsNumeric(Agent)
when 0 then Agent
else null end AgentId
from yourAgentTable
但不要期望结果与您的要求一样
你会得到像
这样的答案----------------------------------------------------
Ident | ValueField | Agent
----------------------------------------------------
1 null Agent1
2 1 null
3 2 null
4 3 null
5 null Agent2
6 4 null
7 5 null
8 6 null
希望现在您应该拥有获取数据的身份以及数据的顺序,
现在执行更新语句以获取其值为null的AgentIds,并且您将获得数据。