如何把SQL数据表中一个字段的值按逗号分隔存入另外一个表,并删除重复记录?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把SQL数据表中一个字段的值按逗号分隔存入另外一个表,并删除重复记录?相关的知识,希望对你有一定的参考价值。
比如:字段名为mylab,有3条(实际有多条)记录,值分别为:中国,人民,解放军,胜利;中国,人民,和平;祖国,强大,胜利;
想得到一个表,字段名为mykey,希望结果7条(实际情况下将有很多条)记录,值分别为:中国;人民;解放军,胜利;和平;祖国;强大。
比如找A表中的rank字段以,分开,分别加入到B表的字段中
<%
'rank的值为a,b,c,d,e,f
set rs=server.CreateObject("adodb.recordset")
sql="select rank from a"
rs.open sql,conn,1,3
if not rs.eof then
do while not rs.eof
rank=rs("rank")&",,,,,,,,,,,,,"'这里之所以要加后面的字符串的原因在于:第一是rs("rank")字段中没有",",第二是b表中取的xrank(4)若在rs("rank")没有的情况下,会报错,没以这里加上后面的字符串,就自定义其xrank(4)为空的
xrank=split(rank,",")
set rs1=server.CreateObject("adodb.recordset")
sql1="select * from b"
rs1.open sql1.conn,1,3
rs1.addnew
rs1("b1")=xrank(0)
rs1("b2")=xrank(1)
rs1("b3")=xrank(2)
rs1("b4")=xrank(3)
rs1("b5")=xrank(4)
rs1.update
rs.movenext
loop
end if
%> 参考技术A 什么数据库?
SQL Server 么?
如果是 SQL Server 2005/2008 的话, 是可以实现的。
就是首先 将一行拆分为多行。然后 合并重复记录。
参考资料:http://hi.baidu.com/wangzhiqing999/blog/item/0c2fd3ad2ddcc0f31f17a21d.html
参考技术B 思路:先拆开后插入临时表中,
再distinct 去重,再连接起来插入至你的表中.
可以把这个写成个方法,调用.追问
非常感谢您的思路,如果有空,还请费心写个实例并加一点注释说明!我是新手刚开始学习!
oracle 字段比例拆分
比例拆分:Oracle中如何通过SQL语句把例如数据表中的一个字段数据为(1:2:3:4),拆分为1,2,3,4四个字段数据?
因为字段中的数据位数不定,所以最好能根据“:”进行分割。
(SELECT '1:2:3:4' NAME FROM DUAL)
SELECT REGEXP_SUBSTR(NAME, '[^:]+', LEVEL, 1) C1,
REGEXP_SUBSTR(NAME, '[^:]+', LEVEL, 2) C2,
REGEXP_SUBSTR(NAME, '[^:]+', LEVEL, 3) C3,
REGEXP_SUBSTR(NAME, '[^:]+', LEVEL, 4) C4
FROM TAB
CONNECT BY LEVEL <= LENGTH(TRANSLATE(NAME, ':' || NAME, '')) + 1;追问
请问结果怎么不对呢?
刚开始手写的,没测试,位置写倒了,发现后修改了下。你执行的早了点。
追问能否麻烦把修改后的语句发一下,谢谢
追答上面那个已经是了呀。你在执行一下。
本回答被提问者和网友采纳以上是关于如何把SQL数据表中一个字段的值按逗号分隔存入另外一个表,并删除重复记录?的主要内容,如果未能解决你的问题,请参考以下文章
在sql server数据库中查询一个用逗号分隔的字段的问题