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

sql拆分字段成多行

发布时间: 2022-09-02 15:45:13

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, ',') 是计算逗号的位置。

㈡ sql 怎么把一个字段的值分成多行

declare定义一个变量 @str 这个变量的属性为 varchar(100) 将'a.bb.ccc' 赋给变量 @str 下面的意思是从master(数据库的名字)中的spt_values(表名)查出字段为 col 的数据,同时这个是有条件的,where后面就是具体的条件:type=1同时 字段numb

㈢ sql分割字段中数据并显示成多条记录

selectid,a1=LEFT([数据1],2),a2=right(LEFT([数据1],5),2),a3=RIGHT(rtrim([数据1]),2),
b1=LEFT([数据2],2),b2=right(LEFT([数据2],5),2),b3=RIGHT(rtrim([数据2]),2)into#test2from#test

selecta.id,[数据1],[数据2]from(selectid,[数据1],ROW_NUMBER()over(partitionbyidorderby[数据1])asnumberfrom#test2unpivot([数据1]foraain(a1,a2,a3))asf)a,(selectid,[数据2],ROW_NUMBER()over(partitionbyidorderby[数据2])asnumberfrom#test2unpivot([数据2]foraain(b1,b2,b3))asf)b

㈣ 求SQL高手----将一条记录中的某个字段拆分,多行显示

4行变成1行?如果用SQLServer的话,可以用一种很诡异的方法:SELECTDISTINCT','+SALE_ITEMFROMSALE_REPORTFORXMLPATH('')楼主可以测试一下,最后用一个FORXMLPATH('')就好。我上面的SQL执行结果为:,C,A,B

㈤ sql2000 表中一列内容拆分转多行语句

--搭建环境

create table #(a int,b varchar(60))

insert into # select 1,'123,456,xxx,789' union all select 2,'321,213,sss,985'

select * from #

go


------------------------------测试---------------------------------------------

--update组成查询字符串

update # set b=';'+b+';'

update # set b=replace(b,';','''')

update # set b=replace(b,',',''',''')

go

--创建中间表

create table #tmp(a int identity(1,1),co1 varchar(10),co2 varchar(10),co3 varchar(10),co4 varchar(10))

go

--如果#表中行数太多,可能会超过8000的长度,可以考虑用游标替换这部分

declare @sql varchar(8000)

set @sql=''

select @sql=@sql+b+' union all select ' from #

select @sql='select '+left(@sql,len(@sql)-17)

select @sql='insert into #tmp(co1,co2,co3,co4) '+@sql

print @sql

exec(@sql)

select * from #tmp

---------------------------------

select a,co1 from #tmp union all

select a,co2 from #tmp union all

select a,co3 from #tmp union all

select a,co4 from #tmp

order by a


㈥ SQL 把字段内容按分隔符,转换成多行插入到另一个表。

select a.V1,b.V2
from(
select V1, [V2] = CONVERT(xml,'<root><v>' + REPLACE([V2], ',', '</v><v>') + '</v></root>')
from 原表T1
) a
OUTER APPLY(
select V2 = N.v.value('.', 'varchar(100)')
from a.[V2].nodes('/root/v') N(v)
) b

㈦ SQL Server 表中字段按分隔符拆分为多行问题

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, ',') 是计算逗号的位置。

㈧ sql 分列多行

参考以下sql

--测试一
--'abc|efg|hij|klm'参数一:截取的字符串str
--'|'参数二:在截取的字符串str中查询目标字符x
--1参数三:出现的位次n
--截取str中x出现n次之前的所有字符
--截取'abc|efg|hij|klm'中第一个'|'之前的所有字符abc
SELECTSUBSTRING_INDEX('abc|efg|hij|klm','|',1)
--测试二
--'abc|efg|hij|klm'参数一:截取的字符串str
--'|'参数二:在截取的字符串str中查询目标字符x
---1参数三:当为负数时,则表示倒序的位次
--截取str后中x出现从后往前数n次之后的所有字符
--截取'abc|efg|hij|klm'中从后往前数第一个'|'之后的所有字符klm
SELECTSUBSTRING_INDEX('abc|efg|hij|klm','|',-1)

㈨ 求一个SQL语句,按某一字段值拆分多行

4行变成1行? 如果用 SQL Server 的话,可以用一种很 诡异的方法: SELECT DISTINCT ',' + SALE_ITEM FROM SALE_REPORT FOR XML PATH('') 楼主可以测试一下,最后用一个 FOR XML PATH('') 就好。 我上面的 SQL 执行结果为: ,C,A,B

㈩ SQL 语句 将一个表中用特殊字符分割的字段转换成多行数据

不知道你是什么数据库,如果是Mysql,可以这样(假定含有qq字段的表为t1,另一张表为t2):
select `name` from `t2` where find_in_set(`id`, (select `nameid` from `t1` where `qq`=123));
如果是SQLServer,则这样:
select [name] from [t2] where charindex(','+[id]+',',','+(select [nameid] from [t1] where [qq]=123)+',')>0;
如果是ACCESS,则这样:
select [name] from [t2] where instr(',' & (select [nameid] from [t1] where [qq]=123) & ',',',' & [id] & ',')>0;