问题确认:你是要提取以下划线(_)为分隔符的字串的第三个子字串。
答案:
select
dbogetpara('14层_303盘区_5307工作面',3,'_')
条件:先要再数据库中加入这个自定议函数。这里免费奉献给你一个有用的函数,用于按指定分隔符提取字串。
create
function
getpara
(@sql
nvarchar(3000),--要分割的原字串。
@sn
int,
--要取第几个
@deli
varchar(1))--分隔符
returns
varchar(1000)--返回值
as
begin
declare
@first
int,@last
int,@result
varchar(1000),@sn0
int
select
@sn0=0,@first=0,@last=1,@sql=@sql+replicate(@deli,5)
while
@sn0!=@sn
begin
select
@sn0=@sn0+1,@first=@last,@last=charindex(@deli,@sql,@last)+1
end
set
@result=substring(@sql,@first,@last-@first-1)
return
(
@result
)
end
go
一、字母在左、数字在右。(如图)
提取数字的公式为
=LOOKUP(9^9,RIGHT(A2,ROW(1:9))1)
提取字母的公式为
=SUBSTITUTE(A1,B1,)
二、字母在右、数字在左。(如图)
提取数字的公式为
=LOOKUP(9^9,LEFT(A8,ROW(1:9))1)
提取字母的公式为
=SUBSTITUTE(A8,B8,)
楼主采纳我吧
#include
<stdioh>
void
main()
{
char
str[80],digit[80];
char
ps;
int
i=0;
gets(str);
ps=str;
while(ps!='\0')
{
if(ps>='0'&&ps<='9')
{
digit[i]=ps;//若当前字符是数字字符,保存到digiti里面,并且i的下标加1
i++;
}
ps++;//不管是不是,判断完当前的字符ps之后,ps++,表示移动到下一个字符判断
}
digit[i]='\0';//给保存数字字符的字符数组加上个结束符号‘\0’,因为printf(%s)是以'\0'表示字符结束的
}
可选用以下方法提取:
1、给出数字的起始位置和长度。示例公式:=--mid(a1,5,3) 公式结果为提取A1单元格中从第5位开始的3个数字。
2、提取某特定字符串后的数字。示例公式:=-lookup(0,-mid(a1,find("ABC",a1)+LEN("ABC"),row(1:99))) 公式结果为提取A1单元格中字符串ABC之后的数字。
3、数字在一侧其他则中文字符组成。示例公式:数字在前,公式=left(a1,2len(a1)-lenb(a1));数字在后,公式=right(a1,2len(a1)-lenb(a1))
4、没有给出任何条件,只要求将单元格中的数字提出。通用公式=-lookup(0,-mid(a1,min(find(row(1:10)-1,a1&1/17)),row(1:99))) 按组合键ctrl+shift+enter结束公式。
1、创建测试表,
create table test_str(id int, v_str varchar2(20));
2、插入测试数据
insert into test_str values(1,'abc123');
insert into test_str values(2,'ef414219sd');
insert into test_str values(3,'123');
insert into test_str values(4,'dddfg');
commit;
3、查询表中全量数据,select t from test_str t;
4、编写语句,取字符串中的数字;
select t, regexp_replace(v_str,'\D','') v_str2 from test_str t;
#include<stdioh>
int
main()
{
char
str[1000];//保存读取到的字符串
long
sum=0,data[1000];
int
i=0,top=0;
printf("输入字符串:\n");
scanf("%s",str);
while(str[i]!='\0')//未到字符串末尾
{
if(str[i]>='0'&&str[i]<='9')//如果是数字
sum=sum10+(str[i]-'0');//连续数字转换为数
else
if(sum!=0)//保存这个数
{
data[top++]=sum;
sum=0;
}
i++;
}
if(sum!=0)//判断最后一个字符是否是数
data[top++]=sum;
printf("字符串中的数字是:\n");
i=0;
while(i<top)
{
printf("%ld",data[i]);
if(i<top-1)//不打印最后一个逗号
printf(",");
i++;
}
printf("\n");
system("pause");
return
0;
}
以上就是关于SQL语句提取字符串中数字全部的内容,包括:SQL语句提取字符串中数字、EXCEL中如何将字符串中的数字或字母取出、C语言 将用户输入的字符串中的所有数字提取出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)