當前位置:首頁 » 編程語言 » sqlsplit

sqlsplit

發布時間: 2022-05-23 20:38:32

⑴ 求sql split函數的用法

目前的sql沒有自帶split的函數,所以如果想用的話,需要自己先自建一個split的內嵌函數後,再使用;

這個函數最簡單的用法,就是通過某個特定的分隔符,將一串字元串分割開來;

例如:split('a/b/c/d/e','/'),就會變成:

a

b

c

d

e

這個意思就是說,用''作為分隔符,分割'a/b/c/d/e'這個字元串;

具體如何構建split函數,可以參考一下這個:網頁鏈接

當然還可以根據自己的需要,構建更復雜的函數,方便自己的使用;

⑵ 高手請進!sql查詢語句:使用order by sum(欄位) 和 split的問題

第一個問題:
可以用聚合函數的表達式排序,也可以給聚合函數取個另名來排序
select 欄位1,max(欄位2*欄位3) as a,sum(欄位2*欄位3) as b from 表A ORDER BY B

第二個問題:
在SQL SERVER中 SPLIT不能用於分離字元串.
可以寫個自定義函數,用來按某分隔符和順序號提取字串.

字串拆分函數腳本
create FUNCTION mysplit
(@str nvarchar(2000),--要拆分的源字元串
@sn int, --要分離出的子串的序號.
@Deli varchar(1))--分隔符
RETURNS varchar(100)
AS
BEGIN
declare @first int,@last int,@result varchar(1000),@sn0 int
select @sn0=0,@first=0,@LAST=1,@str=@str+REPLICATE(@DELI,5)
while @sn0!=@sn
begin
select @sn0=@sn0+1,@first=@LAST,@last=charindex(@DELI,@str,@LAST)+1
end
SET @RESULT=SUBSTRING(@str,@FIRST,@LAST-@FIRST-1)

RETURN ( @RESULT )

END

GO

字串拆分函數使用方法舉例:
select DBO.mysplit('ABC|DEF|GHIJ|KLM|NOP|',3,'|')
輸出:
GHIJ

⑶ sql語句里有類似split的函數嗎

可以直接使用,你試一下。我只用過instr,沒對數據進行過處理如果不行你也可以使用where
instr(field,'"&x&",')<>0(引號,逗號等自己處理下)

⑷ 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里有沒有類似SPLIT的分割字元串函數

createfunctionf_split(@cvarchar(2000),@splitvarchar(2))

returns@ttable(colvarchar(20))

as

begin

while(charindex(@split,@c)<>0)

begin

insert@t(col)values(substring(@c,1,charindex(@split,@c)-1))

set@c=stuff(@c,1,charindex(@split,@c),'')

end

insert@t(col)values(@c)

return

end

go

select*fromdbo.f_split('dfkd,dfdkdf,dfdkf,dffjk',',')

dropfunctionf_split

col

--------------------

dfkd

dfdkdf

dfdkf

dffjk

(5)sqlsplit擴展閱讀

巧用SQL內置函數分割字元串

createfunction[dbo].[fn_char_splitbystr](

@Stringnvarchar(4000),function

@Delimiternvarchar(100)

)

returns@ValueTabletable([FValue]nvarchar(4000),[FSerial]int)

as

begin

declare@valuenvarchar(4000),@valnvarchar(4000)

declare@NextStringnvarchar(4000),@Posint,@NextPosint,@CommaChecknvarchar(1),@idint

set@value=@String

set@id=1

set@NextString=''

set@CommaCheck=right(@value,1)

set@value=@value+@Delimiter+space(len(@Delimiter)-1)

set@Pos=charindex(@Delimiter,@value)

set@NextPos=1

while(@pos<>0)begin

set@NextString=substring(@value,1,@Pos-1)

set@val=@NextString

if@id>1set@val=substring(@val,len(@Delimiter),len(@val))

insertinto@ValueTable([FValue],[FSerial])VALUES(@val,@id)

set@value=substring(@value,@pos+1,LEN(@value))

set@NextPos=@Pos

set@pos=charindex(@Delimiter,@value)

set@id=@id+1

end

return

end

⑹ Split(SQL)

Split()是將字元串分割成數組;
sql是不是一個函數或者語句?如果向樓上說的是個函數的話應該是Split(SQL())才對啊
樓主說的不是很清楚,SQL沒有單獨出現的;
如果是個範例說明,SQL代表一個查詢的結果,那一個是查詢出來的分割的代表,而非SQL本身分成若干份:
做個範例樓主應該就明白了:

var str="a1-a2-a3-a4-a5";//假設有這樣一個字元串;

sql的執行結果是"-";
var a=str.Split("-");

那麼a這個數組應該是:
a[0]=a1;
a[1]=a2;
a[2]=a3;
a[3]=a4;
a[4]=a5;

如果SQL的運行結果是"-a";
var a=str.Split("-a");

那麼a這個數組應該是:
a[0]=a1
a[1]=2;
a[2]=3;
a[3]=4;
a[4]=5;

⑺ oracle 如何用sql實現split功能

本函數可以將「目標字元串」以「指定字元串」進行拆分,並通過表結構返回結果。代碼如下:

CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2 (4000);
CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)
RETURN str_split
PIPELINED
AS
v_length NUMBER := LENGTH(p_string);
v_start NUMBER := 1;
v_index NUMBER;
BEGIN
WHILE(v_start <= v_length)
LOOP
v_index := INSTR(p_string, p_delimiter, v_start);

IF v_index = 0
THEN
PIPE ROW(SUBSTR(p_string, v_start));
v_start := v_length + 1;
ELSE
PIPE ROW(SUBSTR(p_string, v_start, v_index - v_start));
v_start := v_index + 1;
END IF;
END LOOP;

RETURN;
END splitstr;

創建完畢後,我們來測試一下,例如執行如下SQL:

select * from table(splitstr('Hello,Cnblogs!',','));

其輸出結果為一個兩行的表,如下圖:

⑻ SQL分段讀取split

substring(1,2)從第1個字元取2位
substring(3,2)從第3個字元取2位

⑼ sql split

" csub like '|15%'" 不就可以了?

如果你想用ID的話就這樣
"csub like '|" & id & "%'"

⑽ mssql 查詢Split數據

首先,要說明一下,MSSQL是沒有內置Split函數的,需要你自己去創建標量值函數的,創建標量值函數的t-sql腳本如下:

useyour_db_name
go
createfunctionSplit--創建標量值函數Split
(
@expressnvarchar(2000),--字元串表達式
@characterchar(1),--分隔字元
@positionint--獲取數組第幾個元素,下標從1開始
)
returnsnvarchar(100)
as
begin
declare@indexint=1;
declare@posint=0;
declare@tchnvarchar(50);

if@position<=0set@position=1;--下標從1開始

while@index<=len(@express)begin
ifsubstring(@express,@index,1)=@characterbegin
if@pos=@positionbreak;--已到達指定的索引
else--未到達
begin
set@tch='';
set@pos+=1;
end
end

ifsubstring(@express,@index,1)<>@character
set@tch+=substring(@express,@index,1);

set@index+=1;
end

return@tch;--返回指定索引的元素
end
go

--用法示例:
declare@strnvarchar(50)='0,5,0,ff,bb,ds,ym,dsf';
printdbo.Split(@str,',',4)--print'bb'
go
熱點內容
openwrt源碼下載 發布:2025-02-13 15:01:59 瀏覽:644
linux刪除一個目錄 發布:2025-02-13 15:00:29 瀏覽:539
螞蟻存儲 發布:2025-02-13 15:00:25 瀏覽:918
腳本師傳奇 發布:2025-02-13 14:45:48 瀏覽:481
我的世界lce伺服器剪輯 發布:2025-02-13 14:40:50 瀏覽:625
phpsftp上傳 發布:2025-02-13 14:35:43 瀏覽:273
c學生管理系統資料庫 發布:2025-02-13 14:21:41 瀏覽:123
傳奇添加會員腳本 發布:2025-02-13 14:20:50 瀏覽:206
微信開發平台源碼 發布:2025-02-13 14:14:20 瀏覽:614
安卓大屏屏幕休眠是什麼意思 發布:2025-02-13 14:13:28 瀏覽:465