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

sql字元串切分

發布時間: 2022-08-23 03:23:25

sql語句進行字元串分割

你是什麼資料庫?mysql
按照第一個*號前面的字元串分組
然後匯總
select
a,sum(b)
from
pppppp.tablename1
group
by
substring_index(a,'*',1)
limit
0,
50
按照第二個*前面的字元串分組
然後匯總
select
a,sum(b)
from
pppppp.tablename1
group
by
substring_index(a,'*',2)
limit
0,
50

❷ sql查詢里 怎麼拆分字元串(按「/」拆分)

先建立一個自定義函數,之個函數非常有用,建議收入自已的資料庫
CREATE FUNCTION mysplit--將以某分隔符分段的字串,按指定的順序號提取子串:

(@strnvarchar(2000),--源字串
@snint,--提取序號
@Delivarchar(1)--分隔符
)
RETURNSvarchar(100)
AS
BEGIN
declare@firstint,@lastint,@resultvarchar(1000),@sn0int
select@sn0=0,@first=0,@LAST=1,@str=@str+REPLICATE(@DELI,1)
while@sn0!=@sn
begin
select@sn0=@sn0+1,@first=@LAST,@last=charindex(@DELI,@str,@LAST)+1
end
if@last-@first-1<0
set@result=''
else
SET@RESULT=SUBSTRING(@str,@FIRST,@LAST-@FIRST-1)
RETURN(@RESULT)
END

查詢方法:

DECLARE@AVARCHAR(100),@BVARCHAR(100),@CVARCHAR(100)
SELECT
@A=DBO.MYSPLIT('A|B|C',1,'|'),
@B=DBO.MYSPLIT('A|B|C',2,'|'),
@C=DBO.MYSPLIT('A|B|C',3,'|')
SELECT@A,@B,@C

❸ SQL拆分逗號分隔的字元串

1、首先點擊新建查詢按鈕,新建一個查詢。

❹ sql如何實現字元串分割

你好,很高興回答你的問題。
你的這個問題是要實現第二張圖的界面效果吧。
是有一個系統訪問資料庫去實現的吧。
這個邏輯完全可以放在你的系統中查詢出結果後通過業務代碼來處理實現。
功能都看資料庫實現其實也是不太合適的。資料庫只是一個存放數據供檢索的地方,做太多功能會影響檢索效率的。
如果有幫助到你,請點擊採納。

❺ sql字元串怎麼按逗號分割

[sql]
view
plainprint?
create
or
replace
function
f_intellect_first_sales_prov(var_sales
in
varchar2,
var_first_sales
in
varchar2,
var_split
in
varchar2)
return
varchar2
is
result
varchar2(1);
/****************************************************
**
[sql]
view
plainprint?
**
all
rights
reserved.
**
**
函數名稱:f_intellect_first_sales_province
**

數:【名稱】
【類型

【說明】
**
var_sales
varchar2
字元串1,逗號分隔的,如'aaa,bbb'
var_first_sales
varchar2
字元串2,逗號分割的,如'cc,aaa'
**
var_split
varchar2
要使用的分隔符
**


值:result
varchar2
處理後返回的值1/0
**

要:如果字元串2中的某一個分割的字元串在字元串1中就返回1,否則返回0
**
**
當前版本:1.0
**
**

者:liuh
**
完成日期:2013年1月29日
**

註:
****************************************************/
var_element
varchar2(4000);
var_element2
varchar2(4000);
var_tmp
varchar2(4000);
var_tmp2
varchar2(4000);
begin
result
:=
'0';
var_tmp
:=
var_sales;
var_tmp2
:=
var_first_sales;
if
var_tmp2
is
null
or
var_tmp2
=''
then
return(result);
elsif
var_tmp
is
null
or
var_tmp
=''
then
return(result);
else
/*如果字元串1不為空,在後面加上一個特殊的字元,
這樣循環時就可以直接在循環內部處理,不然需要在最外面循環出再一次處理var_tmp,因為最後一次var_tmp中不含有分隔符,不會進行loop循環*/
var_tmp
:=
var_tmp
||
var_split
||
'-1';
end
if;
while
instr(var_tmp,
var_split)
>
0
loop
/****循環字元串1,每次獲得一個var_element****/
var_element
:=
substr(var_tmp,
1,
instr(var_tmp,
var_split)
-
1);
var_tmp
:=
substr(var_tmp,
instr(var_tmp,
var_split)
+
length(var_split),
length(var_tmp));
while
instr(var_tmp2,
var_split)
>
0
loop
/****循環字元串2,每次獲得一個var_element2****/
var_element2
:=
substr(var_tmp2,
1,
instr(var_tmp2,
var_split)
-
1);
var_tmp2
:=
substr(var_tmp2,
instr(var_tmp2,
var_split)
+
length(var_split),
length(var_tmp2));
/*如果字元串1中有字元串2中的一個值,返回1*/
if
var_element
=
var_element2
then
result
:=
'1';
return(result);
end
if;
end
loop;
/*最後一個截取的var_tmp2
不會進入循環
所以在此處處理
如果字元串1中含有字元串2的一個值,返回1*/
if
var_element
=
var_tmp2
then
result
:=
'1';
return(result);
end
if;
end
loop;
return(result);
end
f_intellect_first_sales_prov;

❻ SQL 特定字元串分割

	SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO

CREATEfunction[dbo].[SplitString]
(
@Inputnvarchar(max),
@Separatornvarchar(max)=',',
@RemoveEmptyEntriesbit=1
)
returns@TABLEtable
(
[Id]intidentity(1,1),
[Value]nvarchar(max)
)
as
begin
declare@Indexint,@Entrynvarchar(max)
set@Index=charindex(@Separator,@Input)

while(@Index>0)
begin
set@Entry=ltrim(rtrim(substring(@Input,1,@Index-1)))

if(@RemoveEmptyEntries=0)or(@RemoveEmptyEntries=1and@Entry<>'')
begin
insertinto@TABLE([Value])Values(@Entry)
end

set@Input=substring(@Input,@Index+datalength(@Separator)/2,len(@Input))
set@Index=charindex(@Separator,@Input)
end

set@Entry=ltrim(rtrim(@Input))
if(@RemoveEmptyEntries=0)or(@RemoveEmptyEntries=1and@Entry<>'')
begin
insertinto@TABLE([Value])Values(@Entry)
end

return
end

方法是其他地方找的

set@str1='1,2,3'
select[Value]from[dbo].[SplitString](@str1,',',1)

❼ sql如何根據隔符分割字元串

  1. 資料庫自帶的substring()、charindex()函數,可以根據需要截取字元串,但並不能實現分割

  2. 自己寫分割函數,以下可以參考:

createfunctionGetStr
(
@strvarchar(1024),--要分割的字元串
@splitvarchar(10),--分隔符號
@indexint--取第幾個元素
)
returnsvarchar(1024)
as
begin
declare@locationint
declare@startint
declare@nextint
declare@seedint
set@str=ltrim(rtrim(@str))
set@start=1
set@next=1
set@seed=len(@split)

set@location=charindex(@split,@str)
while@location<>0and@index>@next
begin
set@start=@location+@seed
set@location=charindex(@split,@str,@start)
set@next=@next+1
end
if@location=0select@location=len(@str)+1
returnsubstring(@str,@start,@location-@start)
end

❽ SQl語句查出來的字元串怎麼分段

select
decode(f1,'1','1,你好','1,2','1、你好;2、我很好;'
from al;

試試DECODE函數

❾ sql分割字元串

不知道你用的是什麼資料庫,資料庫不同所用的函數也不一樣。
不過大概意思可以說一下,先定位「:」找到他的位置,然後定位")",找到他的位置。(如果不寫第幾個,那麼默認找第一個)
然後用")"的位置-「:」的位置-1=截取長度
「:」的位置+1=截取開始點
大概就這么個意思
舉例:
AA公司(原名:某有限公司) 原名:KKK公司) 某有限公司
這時用定位函數知道「:」在第8位 「)」在第14位
那麼就需要截取14-8-1=5位
截取的開始點為第9位
也就是說截取9到13位,因為第9位也算,所以就是9,10,11,12,13五個字元,就是某有限公司。
因為所用資料庫不一樣,定位函數也不同,oracle用的是instr,並用substr截取。
sql server用的什麼函數,我不是很清楚。不過大概意思也是這樣的。

❿ sql語句如何將一個字元串拆分重組

您好,您可以參考下面的程序:
declare @str varchar(20)
set @str = 'abcdefg'
declare @i int
declare @count int
select @count = 0
select @i = len(@str)

declare @str1 varchar(20)
select @str1 = ''
while (@i > @count)
begin
select @count = @count + 1
select @str1 = @str1 + substring (@str,@count,1) + '.'

end

print @str1
這個字元串,你可以從表欄位中獲取,也或者可以直接賦值,最好@str1就是你想要的輸出。