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

sql多行逗號分隔

發布時間: 2023-02-09 19:49:55

A. sql 把查詢到的一列數據用逗號隔開連城字元串要怎麼寫

USE [db01]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

create PROCEDURE [dbo].[P_公共_單列值轉多行]

@tb_from nvarchar(255), --源表
@tb_to nvarchar(255), --臨時存放表,臨時表和源表都要有以下兩個欄位:主欄位,分列段
@zhu_lie nvarchar(255), --主欄位名,如ID,
@feng_lie nvarchar(255) --要分列的列名,如「姓名」

AS
BEGIN
SET NOCOUNT ON;
declare @zhu_value nvarchar(255) --主列數值
declare @feng_value nvarchar(500) --分列數值
declare @sql nvarchar(500) --sql語句
declare @wei1 as integer --記錄第一個分號位置
declare @wei2 as integer --記錄第二個分號位置

exec ('declare mycursor cursor for (select ' + @zhu_lie + ', '+ @feng_lie +' from ' + @tb_from + ')')
open mycursor
fetch next from mycursor into @zhu_value,@feng_value

while @@fetch_status = 0
begin
set @wei1 = 1
set @wei2 = 1

while @wei2 > 0
begin
set @wei2 = charindex(';',@feng_value,@wei1)
set @sql = ''
if @wei2 =0
begin
set @sql = 'insert into '+@tb_to+'('+@zhu_lie+','+@feng_lie +') values ('''+@zhu_value+''' ,'''+substring(@feng_value,@wei1,len(@feng_value))+''')'
exec(@sql)
end
else
begin
set @sql = 'insert into '+@tb_to+'('+@zhu_lie+','+@feng_lie +') values ('''+@zhu_value+''' ,'''+substring(@feng_value,@wei1,@wei2-@wei1)+''')'
exec(@sql)
set @wei1= @wei2 + 1
end
end
fetch next from mycursor into @zhu_value,@feng_value
end

close mycursor
deallocate mycursor

END

B. sql欄位里有逗號隔開的數據,怎麼取值

sql欄位有逗號隔開,數據取值的方法。

如下參考:

1.查詢資料庫表的所有欄位,直接使用select語句,如下圖。

C. sql資料庫按符號拆分成多列和多行

你這樣是把列2看成是一個多值數據了,用普通的sql是處理不了的。用plsql寫個小過程來做很容易啊,把一行數據讀出來,然後對列2進行逐個字元讀取放到臨時字元,遇到換行的就把列1和臨時字元寫到資料庫,然後繼續讀

D. Sql語句如何將多行數據組成一個字元串 --------------------

在mysql中有group_concat()函數可以做到:
select age,group_concat(userName) from table group by age;
執行的結果些微差別:
1 name1,name2,name3
2 name4,name5
就是有逗號分割,如果非要去掉逗號,可以使用replace(group_concat(userName),',','');

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

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

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

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

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

H. 在命令行窗口執行sql時,若命令要佔用多行,換行符是什麼 冒號(:) 分號(;) 逗號(,) 連

換行就就是換行符呀(回車),";"是用來分隔不同執行語句的。

如果嚴格按題目和答案來選,4個都沒得選。

I. mysql列轉行(逗號分隔)

mysql查詢含逗號的數據,將逗號拆分為多行展示:

原始數據如下:

現在因為新的需求,需要將這些數據轉化為如下形式:

假設我們需要處理的表結構為:

使用如下sql語句即可實現需求:

查詢的主要思路為,原表與一個包含連續自增長欄位的表進行join,得到字元串分隔後的索引值,其中 length( a.name ) - length( REPLACE ( a.name, ',', '' ) ) + 1 語句獲得字元串逗號分隔之後得到的數據長度,兩表關聯之後,會得到相應行數的數據。比如,

在join之後會得到:

之後對查詢中的結果,使用substring_index方法進行截取,然後得到我們自己想要的數據。

J. 如何把SQL數據表中一個欄位的值按逗號分隔存入另外一個表,並刪除重復記錄


比如找A表中的rank欄位以,分開,分別加入到B表的欄位中
<%
'rank的值為a,b,c,d,e,f
set rs=server.CreateObject("adodb.recordset")
sql="select rank from a"
rs.open sql,conn,1,3
if not rs.eof then
do while not rs.eof
rank=rs("rank")&",,,,,,,,,,,,,"'這里之所以要加後面的字元串的原因在於:第一是rs("rank")欄位中沒有",",第二是b表中取的xrank(4)若在rs("rank")沒有的情況下,會報錯,沒以這里加上後面的字元串,就自定義其xrank(4)為空的
xrank=split(rank,",")
set rs1=server.CreateObject("adodb.recordset")
sql1="select * from b"
rs1.open sql1.conn,1,3
rs1.addnew
rs1("b1")=xrank(0)
rs1("b2")=xrank(1)
rs1("b3")=xrank(2)
rs1("b4")=xrank(3)
rs1("b5")=xrank(4)
rs1.update
rs.movenext
loop
end if
%>