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