SQL语句提取字符串中数字

SQL语句提取字符串中数字,第1张

问题确认:你是要提取以下划线(_)为分隔符的字串的第三个子字串。

答案:

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语言 将用户输入的字符串中的所有数字提取出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9702804.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存