sql 获取某字段里面纯数字或者纯字母的数据

sql 获取某字段里面纯数字或者纯字母的数据,第1张

SQL Server 提供了一个叫IsNumeric的函数,用来判断是不是数字字符。

要查看数字:

select b from a where isnumeric(b)

查看字母数据:

select b from a where NOT isnumeric(b)

完全按照DB2语法设计:

drop function TEST

go

create function test(@input varchar(100))

returns int

begin atomic

declare @int int default 0;

declare @input_lenght int default 0;

set @input_lenght = length(@input);

while @input_lenght <> 0 do

if ( substr(@input,length(@input) - @input_lenght +1,1) in ('0','1','2','3','4','5','6','7','8','9') ) then

set @int = @int + 0;

elseif ( substr(@input,length(@input) - @input_lenght +1,1) in ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')) then

set @int = @int - 1;

end if;

set @input_lenght = @input_lenght -1;

end while;

if ( @int = 0 or @int = -1 length(@input)) then --- 如果累积为0全是数字;如果累积正好是-1乘以长度则正好全是字段

return 0;

else

return 1;

end if;

end

go

select test ('123456') from sysibmdual 结果是 0

select test ('123b456a') from sysibmdual 结果是 1

select test ('abcdefg') from sysibmdual 结果是 0

这个可以通过取整与取余来达到目的呀

比如说要取个位上的数,则将整个数除于10取余,然后再除于1取整就达到了

SELECT CAST(( 245123 % 10 ) / 1 AS INT)

结果是5 ,其它位上的数可以参照这个来,希望能帮到你……

--提取数字

IF OBJECT_ID('DBOGET_NUMBER2') IS NOT NULL

DROP FUNCTION DBOGET_NUMBER2

GO

CREATE FUNCTION DBOGET_NUMBER2(@S VARCHAR(100))

RETURNS VARCHAR(100)

AS

BEGIN

WHILE PATINDEX('%[^0-9]%',@S) > 0

BEGIN

set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')

END

RETURN @S

END

GO

--测试

PRINT DBOGET_NUMBER('呵呵ABC123ABC')

GO

--123

--------------------------------------------------------------------

--提取英文

IF OBJECT_ID('DBOGET_STR') IS NOT NULL

DROP FUNCTION DBOGET_STR

GO

CREATE FUNCTION DBOGET_STR(@S VARCHAR(100))

RETURNS VARCHAR(100)

AS

BEGIN

WHILE PATINDEX('%[^a-z]%',@S) > 0

BEGIN

set @s=stuff(@s,patindex('%[^a-z]%',@s),1,'')

END

RETURN @S

END

GO

--测试

PRINT DBOGET_STR('呵呵ABC123ABC')

GO

--------------------------------------------------------------------

--提取中文

IF OBJECT_ID('DBOCHINA_STR') IS NOT NULL

DROP FUNCTION DBOCHINA_STR

GO

CREATE FUNCTION DBOCHINA_STR(@S NVARCHAR(100))

RETURNS VARCHAR(100)

AS

BEGIN

WHILE PATINDEX('%[^吖-座]%',@S) > 0

SET @S = STUFF(@S,PATINDEX('%[^吖-咗]%',@S),1,N'')

RETURN @S

END

GO

PRINT DBOCHINA_STR('呵呵ABC123ABC')

GO

可以创建一个自定义函数,专门用来截取字符串中所有的数字。

自定义函数:

CREATE function dboF_Get_No

(

@No varchar(100)

)

RETURNS INT

AS

BEGIN

WHILE PATINDEX('%[^0-9]%',@No)>0

BEGIN

SET @No=STUFF(@No,PATINDEX('%[^0-9]%',@No),1,'')

END

RETURN CONVERT(INT,@No)

END

使用:

select dboF_Get_No(字段) from 表

以上就是关于sql 获取某字段里面纯数字或者纯字母的数据全部的内容,包括:sql 获取某字段里面纯数字或者纯字母的数据、SQL中怎样提取纯数字或者纯字母的字段、SQL 取某数值每位数的值,例如数值:245.123,我要分别取出2,4,5,1,2,3。这语句该怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://www.54852.com/web/9449012.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存