
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。这语句该怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)