;WITH A(IndexID,Otype,colSpan,rowSpan)AS (
SELECT 0,N'文本',4,2
)
SELECT @tableHTML =@tableHTML+'<table>'+CONVERT(NVARCHAR(max),(
SELECT
[td/@colspan]=colspan,td='<input type="'+CASE A.Otype WHEN N'文本' THEN 'text' WHEN N'圖片' THEN 'img' END +'" name="text1">'
FROM A ORDER BY A.IndexID FOR XML PATH('tr'),TYPE
))+N'</table>'
SET @tableHTML=REPLACE(REPLACE(@tableHTML,'<','<'),'>','>')
PRINT @tableHTML
DECLARE @tableHTML NVARCHAR(max)=''
create table #t(IndexID INT,Otype NVARCHAR(100),colSpan INT,rowSpan INT)
INSERT INTO #T(IndexID,Otype,colSpan,rowSpan)
SELECT 0,N'文本',4,1 union all
SELECT 1,N'圖片',1,1 union all
SELECT 2,N'文本',1,1 union all
SELECT 3,N'標簽',2,1 union all
SELECT 4,N'圖片',4,1 union all
SELECT 5,N'文本',4,1 union all
SELECT 6,N'圖片',4,1 union all
SELECT 7,N'單選',1,1 union all
SELECT 8,N'單選',1,1 union all
SELECT 9,N'單選',1,1 union all
SELECT 10,N'單選',1,1 union all
SELECT 11,N'文本',2,1 union all
SELECT 12,N'文本',2,1 union all
SELECT 13,N'文本',4,1
;WITH AA AS (
select *, case when sum(colspan)over(order by IndexID)%4=0 then 1 else 0 end ChangeRow,case when min(IndexID)over()=IndexID then 1 else 0 end firstrow from #T
)
--select * from AA
SELECT @tableHTML =@tableHTML+'<table>'+CONVERT(NVARCHAR(max),(
SELECT case when firstrow=1 then '<tr>' else '' end ,
[td/@colspan]=colspan,td=case when /*非表單*/Otype=N'標簽' then 'aaaa' when Otype=N'圖片' then '<img src="https://img.uj5u.com/2020/09/19/102232190520463.jpg"' else
'<input type="'+CASE A.Otype WHEN N'文本' THEN 'text' WHEN N'單選' THEN 'radio' END +'" name="input'+ltrim(IndexID)+'">' end,''
,case when ChangeRow=1 then '</tr><tr>' else '' end
FROM AA as A ORDER BY A.IndexID FOR XML PATH(''),TYPE
))+N'</tr></table>'
SET @tableHTML=REPLACE(REPLACE(@tableHTML,'<','<'),'>','>')
select @tableHTML
DECLARE @tableHTML NVARCHAR(max)=''
create table #t(IndexID INT,Otype NVARCHAR(100),colSpan INT,rowSpan INT)
INSERT INTO #T(IndexID,Otype,colSpan,rowSpan)
SELECT 0,N'文本',4,1 union all
SELECT 1,N'圖片',1,1 union all
SELECT 2,N'文本',1,1 union all
SELECT 3,N'標簽',2,1 union all
SELECT 4,N'圖片',4,1 union all
SELECT 5,N'文本',4,1 union all
SELECT 6,N'圖片',4,1 union all
SELECT 7,N'單選',1,1 union all
SELECT 8,N'單選',1,1 union all
SELECT 9,N'單選',1,1 union all
SELECT 10,N'單選',1,1 union all
SELECT 11,N'文本',2,1 union all
SELECT 12,N'文本',2,1 union all
SELECT 13,N'文本',4,1
;WITH AA AS (
select *, case when sum(colspan)over(order by IndexID)%4=0 then 1 else 0 end ChangeRow
,case when min(IndexID)over()=IndexID then 1 else 0 end firstrow
,case when max(IndexID)over()=IndexID then 1 else 0 end lastrow
from #T
)
--select * from AA
SELECT @tableHTML =@tableHTML+'<table>'+CONVERT(NVARCHAR(max),(
SELECT case when firstrow=1 then '<tr>' else '' end ,
[td/@colspan]=colspan,td=case when /*非表單*/Otype=N'標簽' then 'aaaa' when Otype=N'圖片' then '<img src="https://img.uj5u.com/2020/09/19/102232190520463.jpg" />' else
'<input type="'+CASE A.Otype WHEN N'文本' THEN 'text' WHEN N'單選' THEN 'radio' END +'" name="input'+ltrim(IndexID)+'"/>' end,''
,case when ChangeRow=1 then '</tr>' else '' end+case when ChangeRow=1 and lastrow=0 then '</tr>' else '' end
FROM AA as A ORDER BY A.IndexID FOR XML PATH(''),TYPE
))+N'</table>'
SET @tableHTML=REPLACE(REPLACE(@tableHTML,'<','<'),'>','>')
select @tableHTML
SELECT @tableHTML =@tableHTML+'<table>'+CONVERT(NVARCHAR(max),(
SELECT case when firstrow=1 then '<tr>' else '' end ,
[td/@colspan]=colspan,td=case when /*非表單*/Otype=N'標簽' then 'aaaa' when Otype=N'圖片' then '<img src="https://img.uj5u.com/2020/09/19/102232190520463.jpg" />' else
'<input type="'+CASE A.Otype WHEN N'文本' THEN 'text' WHEN N'單選' THEN 'radio' END +'" name="input'+ltrim(IndexID)+'"/>' end,''
,case when ChangeRow=1 then '</tr>' else '' end+case when ChangeRow=1 and lastrow=0 then '<tr>' else '' end
FROM AA as A ORDER BY A.IndexID FOR XML PATH(''),TYPE
))+N'</table>'
uj5u.com熱心網友回復:
上海有個小錯誤,最后tr多了一個反斜杠
SELECT @tableHTML =@tableHTML+'<table>'+CONVERT(NVARCHAR(max),(
SELECT case when firstrow=1 then '<tr>' else '' end ,
[td/@colspan]=colspan,td=case when /*非表單*/Otype=N'標簽' then 'aaaa' when Otype=N'圖片' then '<img src="https://img.uj5u.com/2020/09/19/102232190520463.jpg" />' else
'<input type="'+CASE A.Otype WHEN N'文本' THEN 'text' WHEN N'單選' THEN 'radio' END +'" name="input'+ltrim(IndexID)+'"/>' end,''
,case when ChangeRow=1 then '</tr>' else '' end+case when ChangeRow=1 and lastrow=0 then '<tr>' else '' end
FROM AA as A ORDER BY A.IndexID FOR XML PATH(''),TYPE
))+N'</table>'
使用的是SQLSERVER2008,上面的寫法好像不支持2008
uj5u.com熱心網友回復:
上海有個小錯誤,最后tr多了一個反斜杠
SELECT @tableHTML =@tableHTML+'<table>'+CONVERT(NVARCHAR(max),(
SELECT case when firstrow=1 then '<tr>' else '' end ,
[td/@colspan]=colspan,td=case when /*非表單*/Otype=N'標簽' then 'aaaa' when Otype=N'圖片' then '<img src="https://img.uj5u.com/2020/09/19/102232190520463.jpg" />' else
'<input type="'+CASE A.Otype WHEN N'文本' THEN 'text' WHEN N'單選' THEN 'radio' END +'" name="input'+ltrim(IndexID)+'"/>' end,''
,case when ChangeRow=1 then '</tr>' else '' end+case when ChangeRow=1 and lastrow=0 then '<tr>' else '' end
FROM AA as A ORDER BY A.IndexID FOR XML PATH(''),TYPE
))+N'</table>'
這行報錯
uj5u.com熱心網友回復:
上海有個小錯誤,最后tr多了一個反斜杠
SELECT @tableHTML =@tableHTML+'<table>'+CONVERT(NVARCHAR(max),(
SELECT case when firstrow=1 then '<tr>' else '' end ,
[td/@colspan]=colspan,td=case when /*非表單*/Otype=N'標簽' then 'aaaa' when Otype=N'圖片' then '<img src="https://img.uj5u.com/2020/09/19/102232190520463.jpg" />' else
'<input type="'+CASE A.Otype WHEN N'文本' THEN 'text' WHEN N'單選' THEN 'radio' END +'" name="input'+ltrim(IndexID)+'"/>' end,''
,case when ChangeRow=1 then '</tr>' else '' end+case when ChangeRow=1 and lastrow=0 then '<tr>' else '' end
FROM AA as A ORDER BY A.IndexID FOR XML PATH(''),TYPE
))+N'</table>'
這行報錯
把case when sum(colspan)over(order by indexid)%4=0 then 1 else 0 end ChangeRow 里的order by indexid去掉就可以
uj5u.com熱心網友回復:
上海有個小錯誤,最后tr多了一個反斜杠
SELECT @tableHTML =@tableHTML+'<table>'+CONVERT(NVARCHAR(max),(
SELECT case when firstrow=1 then '<tr>' else '' end ,
[td/@colspan]=colspan,td=case when /*非表單*/Otype=N'標簽' then 'aaaa' when Otype=N'圖片' then '<img src="https://img.uj5u.com/2020/09/19/102232190520463.jpg" />' else
'<input type="'+CASE A.Otype WHEN N'文本' THEN 'text' WHEN N'單選' THEN 'radio' END +'" name="input'+ltrim(IndexID)+'"/>' end,''
,case when ChangeRow=1 then '</tr>' else '' end+case when ChangeRow=1 and lastrow=0 then '<tr>' else '' end
FROM AA as A ORDER BY A.IndexID FOR XML PATH(''),TYPE
))+N'</table>'
這行報錯
把case when sum(colspan)over(order by indexid)%4=0 then 1 else 0 end ChangeRow 里的order by indexid去掉就可以
那就是你的SQL Server還不支持這個,需要換個寫法:
DECLARE @tableHTML NVARCHAR(max)=''
create table #t(IndexID INT,Otype NVARCHAR(100),colSpan INT,rowSpan INT)
INSERT INTO #T(IndexID,Otype,colSpan,rowSpan)
SELECT 0,N'文本',4,1 union all
SELECT 1,N'圖片',1,1 union all
SELECT 2,N'文本',1,1 union all
SELECT 3,N'標簽',2,1 union all
SELECT 4,N'圖片',4,1 union all
SELECT 5,N'文本',4,1 union all
SELECT 6,N'圖片',4,1 union all
SELECT 7,N'單選',1,1 union all
SELECT 8,N'單選',1,1 union all
SELECT 9,N'單選',1,1 union all
SELECT 10,N'單選',1,1 union all
SELECT 11,N'文本',2,1 union all
SELECT 12,N'文本',2,1 union all
SELECT 13,N'文本',4,1
;WITH AA AS (
select *, case when isnull(p.cols,0)%4=0 then 1 else 0 end ChangeRow
,case when min(IndexID)over()=IndexID then 1 else 0 end firstrow
,case when max(IndexID)over()=IndexID then 1 else 0 end lastrow
from #T as t1
outer apply(select sum(colspan) from #t as tt where tt.IndexID<t1.IndexID) p(cols)
)
--select * from AA
SELECT @tableHTML =@tableHTML+'<table>'+CONVERT(NVARCHAR(max),(
SELECT case when firstrow=1 then '<tr>' else '' end ,
[td/@colspan]=colspan,td=case when /*非表單*/Otype=N'標簽' then 'aaaa' when Otype=N'圖片' then '<img src="https://img.uj5u.com/2020/09/19/102232190520463.jpg" />' else
'<input type="'+CASE A.Otype WHEN N'文本' THEN 'text' WHEN N'單選' THEN 'radio' END +'" name="input'+ltrim(IndexID)+'"/>' end,''
,case when ChangeRow=1 then '</tr>' else '' end+case when ChangeRow=1 and lastrow=0 then '<tr>' else '' end
FROM AA as A ORDER BY A.IndexID FOR XML PATH(''),TYPE
))+N'</table>'
SET @tableHTML=REPLACE(REPLACE(@tableHTML,'<','<'),'>','>')
select @tableHTML
**桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......
我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......
關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......