㈠ 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;