當前位置:首頁 » 編程語言 » sqlsplit的用法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlsplit的用法

發布時間: 2023-04-26 11:34:49

『壹』 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

CREATE function [dbo].[split](@aString varchar(8000),@pattern varchar(10))
returns @temp table([Sid] [int] IDENTITY (1, 1) NOT NULL ,a varchar(100))
--實現split功能 的函數
--說明:@aString,寬拿字元串山戚,如a:b:c;@pattern,分隔標志,如慎唯搭 :
as
begin
declare @i int
set @aString=rtrim(ltrim(@aString))
set @i=charindex(@pattern,@aString)
while @i>=1
begin
insert @temp values(left(@aString,@i-1))
set @aString=substring(@aString,@i+1,len(@aString)-@i)
set @i=charindex(@pattern,@aString)
end
if @aString<>''
insert @temp values(@aString)
return
end

GO

『叄』 split的函數的用法

split函數是一個用於分割字元串的函數,它能以一個字元串內容中的一個(或幾亂帶則個連續的)特定的字元為切割位點的標志,將這個字元串分割成若干個小字元行螞串。它的嘩棚用法是
變數
=
split(原字元串變數,
切割標志)
下面用例子具體說明:
這里有一個字元串變數a,它的值是"你、我、他",則
b
=
split(a,
"、")
此後b就變成了一個變數組,b(0)的值是"你",b(1)的值是"我",b(2)的值是"他"。
下面舉一個應用的例子:text1中是用文字表示的數據,格式為"數據1;數據2;數據3;……,要求點擊command1後將這些數據列在list1中。
private
sub
command1_click()
a
=
split(text1.text,
";")
for
i
=
0
to
ubound(a)
list1.additem
a(i)
next
end
sub

『肆』 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!',','));

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

『伍』 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

『陸』 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;

『柒』 sql查詢以逗號分隔的欄位

通過測試沒有問題,應該是你的拼接語法錯了
create table #a
(
aa varchar(50)
)
insert #a values('2,3,9,12,10,')
insert #a values('5,15,13,3,2,')
select * from #a where aa like '%2%'
drop table #a

看了上面的回答,原來要排除12這種可能性啊,也很簡單,隨手寫的測試語句可以參考下
create table #a
(
aa varchar(50)
)
insert #a values('2,3,9,12,10,')
insert #a values('5,15,13,3,2,')
insert #a values('5,35,3,3,12,')
select * from #a where ','+aa like '%,2,%'
drop table #a

『捌』 split()方法

1、定義和用法

split() 方法用於把一個字元串分割成字元串數組。

2、語法

stringObject.split(separator,howmany)

3、參數與描述

separator:必需。字元串或正則表達式,從該參數指定的地方分割 stringObject。

howmany:可選。該參數可指定返回的數組的最大長度。如果設置了該參數,返回的子串不會多於這個參數指定的數組。如果沒有設置該參數,整個字元串都會被分割,不考慮它的長度。

4、返回值

一個字元串數組。該數組是通過在 separator 指定的邊界處將字元串 stringObject 分割成子串創建的。返回的數組中的字串不包括 separator 自身。

但是,如果 separator 是包含子表達念肢式的正則表達式,那麼返回的數組中包括與這些子表達式匹配的字串(但不包括與整個正則表達式匹配的薯伍文本)。

5、提示和注釋

注釋:如果把空字元串 ("") 用作 separator,那麼 stringObject 中的每個字元之間都會被分割。

注釋:String.split() 執行的操作與 Array.join 執行的操作是相反的。



(8)sqlsplit的用法擴展閱讀:

split()方法使用實例:

例子1

在本例中將分割結構更為復雜的字元串:

"2:3:4:5".split(":") //將返回["2"仔手世, "3", "4", "5"]
"|a|b|c".split("|") //將返回["", "a", "b", "c"]

例子2

使用下面的代碼,可以把句子分割成單詞:

var words = sentence.split(' ')

或者使用正則表達式作為 separator:

var words = sentence.split(/s+/)

例子3

如果希望把單詞分割為字母,或者把字元串分割為字元,可使用下面的代碼:

"hello".split("") //可返回 ["h", "e", "l", "l", "o"]

若只需要返回一部分字元,請使用 howmany 參數:

"hello".split("", 3) //可返回 ["h", "e", "l"]

『玖』 在SQL中,如何將一個用冒號分隔開的值,分隔成一個數組!!

表值函數實現Split方法

1 Create FUNCTION [dbo].[SplitToTable]
2 (
3 @SplitString nvarchar(max),
4 @Separator nvarchar(10)=' '
5 )
6 RETURNS @SplitStringsTable TABLE
7 (
8 [id] int identity(1,1),
9 [value] nvarchar(max)
10 )
11 AS
12 BEGIN
13 DECLARE @CurrentIndex int;
14 DECLARE @NextIndex int;
15 DECLARE @ReturnText nvarchar(max);
16 SELECT @CurrentIndex=1;
17 WHILE(@CurrentIndex<=len(@SplitString))
18 BEGIN
19 SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);
20 IF(@NextIndex=0 OR @NextIndex IS NULL)
21 SELECT @NextIndex=len(@SplitString)+1;
22 SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex);
23 INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText);
24 SELECT @CurrentIndex=@NextIndex+1;
25 END
26 RETURN;
27 END

select * FROm dbo.SplitToTable('111:b2222:323232:32d:e:323232f:g3222', ':')