ISNUMERIC
确定表达式是否为一个有效的数字类型。语法
ISNUMERIC ( expression )参数
expression要计算的表达式。返回类型
int注释
当输入表达式得数为一个有效的整数、浮点数、money 或 decimal 类型,那么 ISNUMERIC 返回 1;否则返回 0。返回值为 1 确保可以将 expression 转换为上述数字类型中的一种。示例
A. 使用 ISNUMERIC
下面的示例返回 1,这是因为 zip 列包含有效的数值。 USE pubs
SELECT ISNUMERIC(zip)
FROM authors
GO
确定表达式是否为一个有效的数字类型。语法
ISNUMERIC ( expression )参数
expression要计算的表达式。返回类型
int注释
当输入表达式得数为一个有效的整数、浮点数、money 或 decimal 类型,那么 ISNUMERIC 返回 1;否则返回 0。返回值为 1 确保可以将 expression 转换为上述数字类型中的一种。示例
A. 使用 ISNUMERIC
下面的示例返回 1,这是因为 zip 列包含有效的数值。 USE pubs
SELECT ISNUMERIC(zip)
FROM authors
GO
create function getnewstr
(@oldstr varchar(100))
returns varchar(100)
as
begin
declare @i int
set @i = 1
while @i <= len(@oldstr)
if substring(@oldstr, @i, 1) like('[^a-z,A-Z,0-9]')
set @oldstr = replace(@oldstr, substring(@oldstr, @i, 1), '')
else
set @i = @i +1
return @oldstr
end
这样写更新语句
update 表
set 字段 = dbo.getnewstr(字段)
where
字段 like('%[^a-z,A-Z,0-9]%')
insert into @t select 1,'甲','100台'
insert into @t select 2,'乙','98'
insert into @t select 3,'丙','1997台'
insert into @t select 4,'丁','7台'
select id,name,replace(value,'台','') from @t1 甲 100
2 乙 98
3 丙 1997
4 丁 7
id name value
1 甲 100(台)
2 乙 98
3 丙 1997(千台)
4 丁 7台
.....
情况求教这样该如何解决?
insert into tb values(1, '甲', '100台')
insert into tb values(2, '乙', '98')
insert into tb values(3, '丙', '1997台')
insert into tb values(4, '丁', '7台')
goselect id , name , value = replace(value , '台' , '') from tbdrop table tb/*
id name value
----------- ---------- -------
1 甲 100
2 乙 98
3 丙 1997
4 丁 7(所影响的行数为 4 行)
*/
insert into tb values(1, '甲', '100台')
insert into tb values(2, '乙', '98')
insert into tb values(3, '丙', '1997台')
insert into tb values(4, '丁', '7台')
go--非0-9以及中文字符之外的字符删除.txt
--建立如下函数
create function getnewstr(@oldstr varchar(100))
returns varchar(100)
as
begin
declare @i int
set @i = 1
while @i <= len(@oldstr)
if substring(@oldstr, @i, 1) like('[^0-9]')
set @oldstr = replace(@oldstr, substring(@oldstr, @i, 1), '')
else
set @i = @i +1
return @oldstr
end
goselect id , name , value = dbo.getnewstr(value) from tbdrop table tb
drop function getnewstr
/*
id name value
----------- ---------- -------
1 甲 100
2 乙 98
3 丙 1997
4 丁 7(所影响的行数为 4 行)
*/
insert into tb values(1, '甲', '100(台)')
insert into tb values(2, '乙', '98')
insert into tb values(3, '丙', '1997(千台)')
insert into tb values(4, '丁', '7台')
go--非0-9以及中文字符之外的字符删除.txt
--建立如下函数
create function getnewstr(@oldstr varchar(100))
returns varchar(100)
as
begin
declare @i int
set @i = 1
while @i <= len(@oldstr)
if substring(@oldstr, @i, 1) like('[^0-9]')
set @oldstr = replace(@oldstr, substring(@oldstr, @i, 1), '')
else
set @i = @i +1
return @oldstr
end
goselect id , name , value = dbo.getnewstr(value) from tbdrop table tb
drop function getnewstr
/*
id name value
----------- ---------- -------
1 甲 100
2 乙 98
3 丙 1997
4 丁 7(所影响的行数为 4 行)
*/
returns varchar(100)
as
begin
while(patindex('%[^0-9]%',@value)>0)
begin
set @value=isnull(substring(@value,1,patindex('%[^0-9]%',@value)-1),'')+isnull(substring(@value,patindex('%[^0-9]%',@value)+1,len(@value)),'')
end
return @value
enddeclare @t table (id int, name varchar(20), value varchar(20))
insert into @t select 1,'甲','100台'
insert into @t select 2,'乙','98'
insert into @t select 3,'丙','1997台'
insert into @t select 4,'丁','7台'
select id,name,dbo.ss(value) from @t
或者用stuff()函数:
alter function ss(@value varchar(100))
returns varchar(100)
as
begin
while(patindex('%[^0-9]%',@value)>0)
begin
set @value=stuff(@value,patindex('%[^0-9]%',@value),1,'')
end
return @value
end
select id,name,dbo.ss(value) from @t