当前位置:首页 » 编程语言 » sql多行逗号分隔
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql多行逗号分隔

发布时间: 2023-02-09 19:49:55

A. sql 把查询到的一列数据用逗号隔开连城字符串要怎么写

USE [db01]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create PROCEDURE [dbo].[P_公共_单列值转多行]

@tb_from nvarchar(255), --源表
@tb_to nvarchar(255), --临时存放表,临时表和源表都要有以下两个字段:主字段,分列段
@zhu_lie nvarchar(255), --主字段名,如ID,
@feng_lie nvarchar(255) --要分列的列名,如“姓名”

AS
BEGIN
SET NOCOUNT ON;
declare @zhu_value nvarchar(255) --主列数值
declare @feng_value nvarchar(500) --分列数值
declare @sql nvarchar(500) --sql语句
declare @wei1 as integer --记录第一个分号位置
declare @wei2 as integer --记录第二个分号位置

exec ('declare mycursor cursor for (select ' + @zhu_lie + ', '+ @feng_lie +' from ' + @tb_from + ')')
open mycursor
fetch next from mycursor into @zhu_value,@feng_value

while @@fetch_status = 0
begin
set @wei1 = 1
set @wei2 = 1

while @wei2 > 0
begin
set @wei2 = charindex(';',@feng_value,@wei1)
set @sql = ''
if @wei2 =0
begin
set @sql = 'insert into '+@tb_to+'('+@zhu_lie+','+@feng_lie +') values ('''+@zhu_value+''' ,'''+substring(@feng_value,@wei1,len(@feng_value))+''')'
exec(@sql)
end
else
begin
set @sql = 'insert into '+@tb_to+'('+@zhu_lie+','+@feng_lie +') values ('''+@zhu_value+''' ,'''+substring(@feng_value,@wei1,@wei2-@wei1)+''')'
exec(@sql)
set @wei1= @wei2 + 1
end
end
fetch next from mycursor into @zhu_value,@feng_value
end

close mycursor
deallocate mycursor

END

B. sql字段里有逗号隔开的数据,怎么取值

sql字段有逗号隔开,数据取值的方法。

如下参考:

1.查询数据库表的所有字段,直接使用select语句,如下图。

C. sql数据库按符号拆分成多列和多行

你这样是把列2看成是一个多值数据了,用普通的sql是处理不了的。用plsql写个小过程来做很容易啊,把一行数据读出来,然后对列2进行逐个字符读取放到临时字符,遇到换行的就把列1和临时字符写到数据库,然后继续读

D. Sql语句如何将多行数据组成一个字符串 --------------------

在mysql中有group_concat()函数可以做到:
select age,group_concat(userName) from table group by age;
执行的结果些微差别:
1 name1,name2,name3
2 name4,name5
就是有逗号分割,如果非要去掉逗号,可以使用replace(group_concat(userName),',','');

E. 如何用sql语句将一列多行数据拼接逗号隔开形成一条记录

mysql中,有标准函数,group_concat(name),直接返回连接好的字符串,并以逗号分割,如果记录比较多,超过函数返回值的最大值,可以调整mysql启动参数,增加显示值的长度。

F. 如何用sql语句多行数据拼接逗号隔开

mysql中,有标准函数,group_concat(name),直接返回连接好的字符串,并以逗号分割,如果记录比较多,超过函数返回值的最大值,可以调整mysql启动参数,增加显示值的长度。

G. sql一个字段内有分隔符如何拆分成多行

select num,id, substr(test1,0,instr(test1, ',')-1) test1, substr(test2,0,instr(test2, ',')-1) test2, substr(test3,0,instr(test3, ',')-1) test3 from table_name --前
union
select num,id, substr(test1,instr(test1, ',')+1) test1, substr(test2,instr(test2, ',')+1) test2, substr(test3,instr(test3, ',')+1) test3 from table_name --后

instr(test1, ',') 是计算逗号的位置。

H. 在命令行窗口执行sql时,若命令要占用多行,换行符是什么 冒号(:) 分号(;) 逗号(,) 连

换行就就是换行符呀(回车),";"是用来分隔不同执行语句的。

如果严格按题目和答案来选,4个都没得选。

I. mysql列转行(逗号分隔)

mysql查询含逗号的数据,将逗号拆分为多行展示:

原始数据如下:

现在因为新的需求,需要将这些数据转化为如下形式:

假设我们需要处理的表结构为:

使用如下sql语句即可实现需求:

查询的主要思路为,原表与一个包含连续自增长字段的表进行join,得到字符串分隔后的索引值,其中 length( a.name ) - length( REPLACE ( a.name, ',', '' ) ) + 1 语句获得字符串逗号分隔之后得到的数据长度,两表关联之后,会得到相应行数的数据。比如,

在join之后会得到:

之后对查询中的结果,使用substring_index方法进行截取,然后得到我们自己想要的数据。

J. 如何把SQL数据表中一个字段的值按逗号分隔存入另外一个表,并删除重复记录


比如找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
%>