如何把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四个字段数据?
因为字段中的数据位数不定,所以最好能根据“:”进行分割。

参考技术A WITH TAB AS
(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语句,字段表里某列数据变为用逗号分隔的字符串

字段是多个值拼接的,怎么一一取出来

在sql server数据库中查询一个用逗号分隔的字段的问题

sql server里如何将一组用逗号分隔的字符串分解并插入到另一张表中,比如:11873,27827, 也可能是好多

查询字段值为逗号分隔的值

sql 分隔符