当前位置:首页 » 编程语言 » 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;

热点内容
安卓怎么传视频 发布:2025-07-08 04:03:26 浏览:914
oracle测试sql 发布:2025-07-08 03:16:54 浏览:974
php壁纸源码 发布:2025-07-08 03:04:26 浏览:321
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