當前位置:首頁 » 編程語言 » sql逗號分隔轉換多行
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql逗號分隔轉換多行

發布時間: 2022-05-10 22:27:26

A. sql server中,怎樣查詢欄位把逗號分割的字元串拆分成多條數據

sql server中沒有這種函數,可以自建一個function去拆分,
給你個思路,
用charindex 或是instr等函數,在循環體中查找分隔符出現的位置和並記錄出現次數到變數,然後使用substring函數截取字元串,輸出

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

C. 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

D. SQL逗號分割一列數據的值,將結果變成一行多列

我沒看懂你的意思但是我有一樣個批量刪除的比如
/*
使用存儲過程實現如下功能,批量刪除實際選中的多個反饋活動。
*/
--包規范
create
or
replace
package
pak_activeinfo
as
procere
sp_activeinfo
(
i_activeid
varchar2
);
end
pak_activeinfo;
--包主體
create
or
replace
package
body
pak_activeinfo
as
procere
sp_activeinfo
(
i_activeid
varchar2
)
as
activeid1
varchar2(100);
activeid2
varchar2(100);
activeid3
varchar2(10000)
:=
i_activeid;
a
number;
b
number;
begin
savepoint
sp;--回滾點
select
instr(activeid3,',')
into
a
from
al;
b
:=
a-1;
for
i
in
1..floor(length(activeid3)/b)
loop--改正
--獲取第一個編號
select
substr(activeid3,1,b)
into
activeid1
from
al;
--修改表
update
activeinfo
set
status
=
1
where
activeid
=
activeid1;
--截取第一個編號
select
ltrim(activeid3,activeid1)
into
activeid2
from
al;
--去掉,號
select
ltrim(activeid2,',')
into
activeid3
from
al;
end
loop;
commit;
exception
when
no_data_found
then
dbms_output.put_line('失敗!');
when
others
then
dbms_output.put_line('讀去失敗!原因是:'||sqlerrm);
rollback
to
savepoint
sp;
end
sp_activeinfo;
end
pak_activeinfo;
--測試
begin
pak_activeinfo.sp_activeinfo('1000,1001,1002');
end;
能看懂嗎?
按長度用循環去掉逗號!
希望對你有幫助!

E. 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;

F. 如何用sql語句多行數據拼接逗號隔開

mysql中,有標准函數,group_concat(name),直接返回連接好的字元串,並以逗號分割,如果記錄比較多,超過函數返回值的最大值,可以調整mysql啟動參數,增加顯示值的長度。

G. 如何用sql語句將一列多行數據拼接逗號隔開形成一條記錄

mysql中,有標准函數,group_concat(name),直接返回連接好的字元串,並以逗號分割,如果記錄比較多,超過函數返回值的最大值,可以調整mysql啟動參數,增加顯示值的長度。

H. 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, ',') 是計算逗號的位置。

I. 編寫一個sql語句,把b列中的數據用逗號分隔開,變成很多謝謝

這個我做過,拆分逗號分隔符變列
select a,
t.ca,
c.lv,instr(t.ca, ',', 1, c.lv) + 1,
substr(t.ca,
instr(t.ca, ',', 1, c.lv) + 1,
instr(t.ca, ',', 1, c.lv + 1) -
(instr(t.ca, ',', 1, c.lv) + 1)) AS c
from (select a,
',' || b || ',' AS ca,
b,
LENGTH(b),
length(b || ','),
REPLACE(b, ','),
length(REPLACE(b, ',')), --刪除逗號的長度
nvl(length(REPLACE(b, ',')), 0), --空值長度為空,因此要將空值替換為0
length(b || ',') - nvl(length(REPLACE(b, ',')), 0) AS cnt --以逗號分隔的字元串個數,先在原來的長度上加1 計算去除所有逗號後字元串長度,再,拿這個
FROM TEST_A) t,
(select LEVEL lv from al CONNECT BY LEVEL <= 100) c
where c.lv <= t.cnt --逗號數量在100以內

J. 如何用SQL語句將數據一行變成多行呢

截斷數據,在新增分隔符即可。
放大招
指定索引號,進行數據截取,返回處理後的字元串數組
string str =你的數據
str.substring(你想分的長度)你自己列印一個轉換符就好了