1. sql如何根據符號截取字元串
這個你可以用explode('字元串名,',');來分隔,得到的是一個數組。
比如$a="1,2,3,4,5,6,7,8";
$arr=explode($a,',');
這樣$arr這個數組的元素就成了$arr=array('1','2','3','4','5','6','7','8');了,輸出即可
當然這是PHP的
2. 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
(2)sql字元串split擴展閱讀
巧用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
3. sql如何根據隔符分割字元串
資料庫自帶的substring()、charindex()函數,可以根據需要截取字元串,但並不能實現分割
自己寫分割函數,以下可以參考:
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
4. 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;
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!',','));
其輸出結果為一個兩行的表,如下圖:
6. 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