當前位置:首頁 » 編程語言 » 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;