你也可以使用自加盟查詢象下面這樣:
--create table tbl (id int, value nvarchar(100), category int);
--insert into tbl values
--(1,N'test',1)
--,(2,N' testing',1)
--,(11,N'candy',2)
--,(12,N'ca',2);
select A.*, LEN(B.value)-LEN(A.value) as difference
from tbl A LEFT JOIN tbl B on A.id +1 =B.id and A.category=B.category
--drop table tbl
更新:我注意到,你奇怪定位的空間最後。在計算長度時,大多數SQL服務器不會計算結尾空格。因此,這裏是對上面的查詢黑客
select A.*, LEN(B.value+'>')-LEN(A.value+'>') as difference
from tbl A LEFT JOIN tbl B on A.id +1 =B.id and A.category=B.category
正如在評論中指出,該標識的可能不會是連續的,在這種情況下 試試這個:
create table #temp (rownum int PRIMARY KEY IDENTITY(1,1), id int, value nvarchar(100), category int)
insert into #temp (id, value, category)
select id, value, category from tbl order by id asc
select A.id, A.value, A.category, LEN(B.value+'>')-LEN(A.value+'>') as difference
from #temp A LEFT JOIN #temp B on A.rownum +1 =B.rownum and A.category=B.category
對於ID 1,你的差異不是3,ID 11是-3? –
'test'和'rest'之間沒有區別嗎? –
你在id 2有一個空白區域,是的你的權利它應該是-3在id 11.我的不好 – KLN