超复杂,跪求,如何将一行数据拆分成多行

时间:2022-09-09 10:25:03
一个考试系统的数据库,我精简下
两列

第一列,姓名
张三


第二列,考试内容,NND,下面这些全都在一列上

Users_Question
"
<h1>考试测试</h1>
<div class=""""MainLine"""">单选题(每题5分,共12题,60分)</div>
<div class=""""IsQuestion"""">    
<p style=""""margin-top:5px;"""">1.题目1 (&nbsp;A&nbsp;) &nbsp;&nbsp;<span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class=""""IsQuestion"""">    
<p style=""""margin-top:5px;"""">2.题目2 (&nbsp;B&nbsp;) &nbsp;&nbsp;<span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class=""""IsQuestion"""">    
<p style=""""margin-top:5px;"""">3.题目3 (&nbsp;D&nbsp;) &nbsp;&nbsp;<span style=&#39;color:red&#39;>错误&nbsp;&nbsp;正确答案:B</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class=""""IsQuestion"""">    
<p style=""""margin-top:5px;"""">4.题目4 (&nbsp;A&nbsp;) &nbsp;&nbsp;<span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>


<div class=""""MainLine"""">多选题(每题5分,共8题,40分)</div>
<div class=""""IsQuestion"""">    
<p style=""""margin-top:5px;"""">5.题目5 (&nbsp;B、C&nbsp;)&nbsp;&nbsp;<span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class=""""IsQuestion"""">    
<p style=""""margin-top:5px;"""">6.题目6 (&nbsp;A、D&nbsp;)&nbsp;&nbsp;<span style=&#39;color:red&#39;>错误&nbsp;&nbsp;正确答案:A、B、D</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class=""""IsQuestion"""">    
<p style=""""margin-top:5px;"""">7.题目7 (&nbsp;A、C&nbsp;)&nbsp;&nbsp;<span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class=""""IsQuestion"""">    
<p style=""""margin-top:5px;"""">8.题目8 (&nbsp;C、D&nbsp;)&nbsp;&nbsp;<span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>
"






如何查询成
姓名        题目        选中项        是否正确
张三        题目1       A             正确
张三        题目2       B             正确
张三        题目3       D             错误
张三        题目4       A             正确
张三        题目5       B,C           正确
张三        题目6       A,D           错误
张三        题目7       A,C           正确
张三        题目8       C,D           正确

6 个解决方案

#1


你的数据时存放在html格式的? 存储在数据库了吗?

#2


这个内容最好能够弄成XML格式的内容,一大串内容存储在一个字段内,一个sql语句估计是做不了,如果能够提供XML内容,用存储过程可以解决

#3


帮你把文本取出来,最终结果请再转换吧。
declare @s varchar(max) = '
<h1>考试测试</h1>
<div class="MainLine">单选题(每题5分,共12题,60分)</div>
<div class="IsQuestion">    
<p style="margin-top:5px;">1.题目1 ( A )   <span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class="IsQuestion">    
<p style="margin-top:5px;">2.题目2 ( B )   <span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class="IsQuestion">    
<p style="margin-top:5px;">3.题目3 ( D )   <span style=&#39;color:red&#39;>错误  正确答案:B</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class="IsQuestion">    
<p style="margin-top:5px;">4.题目4 ( A )   <span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>


<div class="MainLine">多选题(每题5分,共8题,40分)</div>
<div class="IsQuestion">    
<p style="margin-top:5px;">5.题目5 ( B、C )  <span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class="IsQuestion">    
<p style="margin-top:5px;">6.题目6 ( A、D )  <span style=&#39;color:red&#39;>错误  正确答案:A、B、D</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class="IsQuestion">    
<p style="margin-top:5px;">7.题目7 ( A、C )  <span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class="IsQuestion">    
<p style="margin-top:5px;">8.题目8 ( C、D )  <span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>'

declare @x xml

set @x =
REPLACE( REPLACE(@s,'&#39;color:green&#39;','"&#39;color:green&#39;"'),'&#39;color:red&#39;','"&#39;color:red&#39;"')

select
CONVERT(varchar(max),t.c.query('p/text()') )
,CONVERT(varchar(max), t.c.query('p/span/text()') )
,t.c.query('.') , t.c.query('p/text()')
from @x.nodes('//div[@class="IsQuestion"]') as t(c)

超复杂,跪求,如何将一行数据拆分成多行

#4


tcmakebest 

明白xml这个的用法了,上我我举的是一个单行的例子,张三,后面HTML

如果此时我有两行,你提供的这段代码如何修改

张三 HTML
李四 HTML

#5


搞不懂为什么那么多人喜欢在sql里面存XML,然后又用sql提供的xml操作语句去操作它。
擦,不觉得很麻烦么。而且这玩意又不好调试

#6


该回复于2013-09-12 11:14:27被管理员删除

#1


你的数据时存放在html格式的? 存储在数据库了吗?

#2


这个内容最好能够弄成XML格式的内容,一大串内容存储在一个字段内,一个sql语句估计是做不了,如果能够提供XML内容,用存储过程可以解决

#3


帮你把文本取出来,最终结果请再转换吧。
declare @s varchar(max) = '
<h1>考试测试</h1>
<div class="MainLine">单选题(每题5分,共12题,60分)</div>
<div class="IsQuestion">    
<p style="margin-top:5px;">1.题目1 ( A )   <span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class="IsQuestion">    
<p style="margin-top:5px;">2.题目2 ( B )   <span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class="IsQuestion">    
<p style="margin-top:5px;">3.题目3 ( D )   <span style=&#39;color:red&#39;>错误  正确答案:B</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class="IsQuestion">    
<p style="margin-top:5px;">4.题目4 ( A )   <span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>


<div class="MainLine">多选题(每题5分,共8题,40分)</div>
<div class="IsQuestion">    
<p style="margin-top:5px;">5.题目5 ( B、C )  <span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class="IsQuestion">    
<p style="margin-top:5px;">6.题目6 ( A、D )  <span style=&#39;color:red&#39;>错误  正确答案:A、B、D</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class="IsQuestion">    
<p style="margin-top:5px;">7.题目7 ( A、C )  <span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>

<div class="IsQuestion">    
<p style="margin-top:5px;">8.题目8 ( C、D )  <span style=&#39;color:green&#39;>正确</span></p>
<p>A.选项</p><p>B.选项</p><p>C.选项</p><p>D.选项</p></div>'

declare @x xml

set @x =
REPLACE( REPLACE(@s,'&#39;color:green&#39;','"&#39;color:green&#39;"'),'&#39;color:red&#39;','"&#39;color:red&#39;"')

select
CONVERT(varchar(max),t.c.query('p/text()') )
,CONVERT(varchar(max), t.c.query('p/span/text()') )
,t.c.query('.') , t.c.query('p/text()')
from @x.nodes('//div[@class="IsQuestion"]') as t(c)

超复杂,跪求,如何将一行数据拆分成多行

#4


tcmakebest 

明白xml这个的用法了,上我我举的是一个单行的例子,张三,后面HTML

如果此时我有两行,你提供的这段代码如何修改

张三 HTML
李四 HTML

#5


搞不懂为什么那么多人喜欢在sql里面存XML,然后又用sql提供的xml操作语句去操作它。
擦,不觉得很麻烦么。而且这玩意又不好调试

#6


该回复于2013-09-12 11:14:27被管理员删除