0
2つの列IDと権限を持つテーブルがあります。権利列は '010111100000000 .... 250 times'のように0,1の形式で250の固定文字を保持します。今すぐ権利列を分割し、構造ID、権利(0または1)、位置(1〜250)を持つ一時テーブルで結果を取得する必要があります。私が最初に5行を持っていて、次にtempテーブルに5 * 250 = 1250行を得ると仮定します。一時テーブルと分割文字列を持つSQL Serverのcte
私は1つの文字列を分割してカーソルを使用しましたが、今はカーソルを避けたいと思います。どのように私はこれを達成することができます。
declare @temp table(Chars int not null, RowID int not null)
--Split the rights string into 250 char rows with RowID as each position
;with cte as
(
select substring(@rights, 1, 1) as Chars,
stuff(@rights, 1, 1, '') as rights,
1 as RowID
union all
select substring(rights, 1, 1) as Chars,
stuff(rights, 1, 1, '') as rights,
RowID + 1 as RowID
from cte
where len(rights) > 0
)
--Get the values in a temporary table except 0
insert into @temp select Chars, RowID from cte option (MAXRECURSION 300);
ありがとうございました – Anurag