當前位置:首頁 » 編程語言 » sql循環字元串

sql循環字元串

發布時間: 2023-01-08 03:06:32

sql 字元串范圍排序

這個 有點難度,我為你寫了 個方法:create function F_sub
(
@str varchar(500)
)returns varchar(300)
Begin
declare @cha char --存儲字元串中的 單個字元
declare @return varchar(300) --返回最終結果
declare @index int --在方法中 控制循環次數
declare @bool int --賦值1,2 相當於 布爾 值
set @return=''
set @index=1
set @bool=2

while(@index<len(@str)+1)
begin
set @cha=substring(@str,@index,1)
IF(isnumeric(@cha)=1) --判斷此字元是否為數字
BEGIN
set @return=@return+cast(@cha as varchar(2))
set @bool=1 --@bool 的值 1,2控制此組數字是否已結束
END
else
BEGIN
if(@bool=1) --每組數字結束後(且之後是非數字),則加上逗號
set @return=@return+','
set @bool=2
END
set @index=@index+1
end --結束循環

if(right(@return,1)=',') --判斷 最後一位字元是否逗號,是則去除。
set @return=left(@return,len(@return)-1)
return @return
End --註:此方法默認將「+」、「-」等數字運算符號列為 數字。 go--建立方法成功 調用方法:declare @str varchar (10)set @str = ' jkfdasjk3fd,32fsd857s 'select dbo.F_sub( @str ) -- 如能 解決問題望 採納,如不能,請告知(Q:344196922)

② sql語言:如何查詢字元串某個字元的個數

好像沒有直接的方法吧,寫個循環試試
loop
a=instr(string,'n',1,1);
--查找第一次出現的位置
string
=
substr(string,a+1,length(string)-a);
--截取第一次出現位置之後的字元,為新的字元串
if
a
<>
0
then
--查詢一次,記錄增加一次,當查詢結束時,找不到字元,返回數據為0
,則推出循環
b=
b+1;
else
b=b;
end
if;
EXIT
WHEN
A=0;--當截取不到字元串時,推出循環
end
loop;
我只大體寫了個循環思路,具體的自己完善吧~

③ sql,怎樣遍歷字元串

不用pl/sql,,,只用sql
select
substr(ename,iter.pos,1) c,
iter.pos
from
(select ename from scott.emp where ename = 'KING') e,
(select pos from t10) iter
where
iter.pos <= length(e.ename);

這里的t10表有10行,欄位叫pos,是從1-10,,所以遍歷的字元串最大不能超過10字元,當然你可以根據自己的需要加,,對了其實這里用rownum也是可以完成的

④ 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;

熱點內容
oracle測試sql 發布:2025-07-08 03:16:54 瀏覽:973
php壁紙源碼 發布:2025-07-08 03:04:26 瀏覽:320
android應用層 發布:2025-07-08 02:42:32 瀏覽:301
大唐存儲銷量 發布:2025-07-08 02:41:11 瀏覽:582
腳本怎麼打開 發布:2025-07-08 02:41:06 瀏覽:822
貴州電信iPtv升級伺服器地址 發布:2025-07-08 02:38:48 瀏覽:412
電腦怎麼鏈接本地伺服器 發布:2025-07-08 02:34:22 瀏覽:147
android調試webview 發布:2025-07-08 02:26:28 瀏覽:358
壓縮袋鞋子 發布:2025-07-08 02:21:30 瀏覽:752
為什麼安卓打吃雞感覺有延遲 發布:2025-07-08 02:09:32 瀏覽:168