存儲過程split
『壹』 informix的存儲過程中,怎麼實現類似split的功能
shell處理完再給informix使用不就行了
『貳』 sqlserver 查詢語句,存儲過程split
程序中處理性能會好些
在sql中寫的話 我會寫個函數來獲取對應的name
寫兩個個函數
一個用於將1,2,3轉換成表
一個用於獲取name
F_Split
F_GetNavName
『叄』 我就是想在存儲過程當中,傳入一個字元串(不知道長度的)。然後把這個字元傳裡面的字元全部拆分開來。
給你個存儲過程
CREATE PROCEDURE p_split
@c varchar(8000),
@split varchar(5)
as
declare @t table( word varchar(20) )
begin
while(charindex(@split,@c)<>0)
begin
insert @t( word) values (substring(@c,1,charindex(@split,@c)-1))
set @c = stuff(@c,1,charindex(@split,@c),'') -- 刪除指定長度的字元並在指定的起始點插入另一組字元
end
insert @t(word) values (@c) ---最後一個不含分隔的加進來
select distinct * from @t
end
GO
還是用表變數
『肆』 mysql存儲過程中 如何拆分字元串
MySQL分割字元串應該如何實現呢?下面就為您介紹MySQL分割字元串的實現方法步驟,希望可以讓您對MySQL分割字元串有更多的了解。
例如:update `edw_video` set company = substring(keyword,1,length(SUBSTRING_INDEX(keyword,",",1)))
名稱:SPLIT_SUB_STR1(取得split字元串的第一段)
參數:str 要split的目標字元串 (輸入格式為『11,2,3,4,5,6』; 輸出為『2,3,4,5,6』)
delimiter 分隔符 (『,』)
split1 輸出第一項(『11』)
存儲過程
CREATE DEFINER=`root`@`%` PROCEDURE `SPLIT_SUB_STR0`(inout str VARCHAR(1000) ,delimiter VARCHAR(1), out split1 VARCHAR(20))
BEGIN
# 名稱 SPLIT_SUB_STR1 取得分割字元串的第一段字元
# 參數inout str VARCHAR(1000) ,delimiter VARCHAR(1), out split0 VARCHAR(20)
# 輸入完整字元串,輸出去掉取得第一項後的字元串; 分隔符; 輸出split的第一個項目
#分割出第一段字元串不包括分隔符的長度
DECLARE SUB_STR_LENGTH INT;
# SUBSTRING_INDEX函數取得目標字元串左側第n個分割符左側的部分,n為負時返回右側第n個的右部分
SET SUB_STR_LENGTH = length(SUBSTRING_INDEX(str,delimiter,1));
#截取第一段字元串,不包括分隔符,放入輸出參數里
SET split0 = substring(str, 1, SUB_STR_LENGTH);
# 取得去掉第一個字元串和分隔符的字元串,進行下次循環取得下個字元串
SET str = substring(str, SUB_STR_LENGTH + 2 );
#測試一下輸出是否正確
#SELECT SUB_STR_LENGTH, SUB_STR_SPLIT0, STR;
END
調用實例
CREATE DEFINER=`root`@`%` PROCEDURE `test`()
BEGIN
#目標字元串
set @a = 』1,2,3,4,5,6,12『;
# 分隔符
set @c = ',';
# 存儲風格後的字元串
set @b = '';
REPEAT
# 調用上面的存儲過程
CALL SPLIT_SUB_STR0(@a, ',', @c);
#將取得的字元串拼接,測試用
set @b = concat(@b, @c);
#當目標字元串為空時,停止循環
UNTIL @a = ''
END REPEAT;
# 查看結果
select @a, @c, @b;
END;
『伍』 mysql 存儲過程或函數 split 怎麼寫
mysql 存儲過程或函數 split 怎麼寫
1、函數必須指定返回值,且參數默認為IN類型。
2、存儲過程沒返回值,參數可以是 IN,OUT,IN OUT類型,有的人可能會理解成OUT 也算是返回值。
3、調用方式:函數 select my_fun() ;過程 call my_pro( ) ;
『陸』 存儲過程如何 解析字元串
方法:
1.創建split函數(轉)
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
--實現split功能 的函數
--date :2005-4-20
--Author :Domino
as
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'\'
insert @temp values(@SourceSql)
return
end
用法:select * from dbo.f_split('A:B:C:D:E',':')
2.存儲過程
CREATE PROCEDURE InsertRecord
@Qstring varchar(50),
AS
insert into names(name1,name2,name3,name4) values
(select * from dbo.f_split(@Qstring,',')
3.調用存儲過程
『柒』 關於SQLserver 存儲過程 如何切割一個字元串 轉化為數組
Create Function [dbo].[Split](@Sql varchar(8000),@Splits varchar(10))
returns @temp Table (a varchar(100))
As
Begin
Declare @i Int
Set @Sql = RTrim(LTrim(@Sql))
Set @i = CharIndex(@Splits,@Sql)
While @i >= 1
Begin
Insert @temp Values(Left(@Sql,@i-1))
Set @Sql = SubString(@Sql,@i+1,Len(@Sql)-@i)
Set @i = CharIndex(@Splits,@Sql)
End
If @Sql <> ''
Insert @temp Values (@Sql)
Return
End
『捌』 oracle存儲過程傳入一個字元串參數'1,2,3,4,5,6,7,8',如何分割並轉為數字
create or replace type type_split as table of varchar2(50); --創建一個type,如果為了使split函數具有通用性,請將其size 設大些。
--創建function
create or replace function split
(
p_list varchar2,
p_sep varchar2 := ','
) return type_split pipelined
is
l_idx pls_integer;
v_list varchar2(50) := p_list;
begin
loop
l_idx := instr(v_list,p_sep);
if l_idx > 0 then
pipe row(substr(v_list,1,l_idx-1));
v_list := substr(v_list,l_idx+length(p_sep));
else
pipe row(v_list);
exit;
end if;
end loop;
return;
end split;
使用:
select * from table(split('1,2,3,4,5,6,7,8'
,','));
然後就可以通過「,」來分割數字了