日期:2014-05-18  浏览次数:20884 次

怎样在sql里面判断一个字符串是否可以转换为数字
^_^

谢谢大家

------解决方案--------------------
ISNUMERIC()
------解决方案--------------------
ISNUMERIC
当输入表达式得数为一个有效的整数、浮点数、money 或 decimal 类型,那么 ISNUMERIC 返回 1;否则返回 0。返回值为 1 确保可以将 expression 转换为上述数字类型中的一种。
------解决方案--------------------
ISNUMERIC
确定表达式是否为一个有效的数字类型。

语法
ISNUMERIC ( expression )

参数
expression

要计算的表达式。

返回类型
int

注释
当输入表达式得数为一个有效的整数、浮点数、money 或 decimal 类型,那么 ISNUMERIC 返回 1;否则返回 0。返回值为 1 确保可以将 expression 转换为上述数字类型中的一种。


select ISNUMERIC(12245.2)
select ISNUMERIC( '啊啊 ')

-----
1
0

------解决方案--------------------
declare @t table(name varchar(100))
insert @t(name)
select '123 '
union all
select '123.45 '


select * from @t where name not like '%[^1-9]% '
------解决方案--------------------
可以使用 ISNUMERIC() 函数,但是需要过滤一些特殊的字符,比如 '$ '和 '. ':

select ISNUMERIC( '$ ')
union all
select ISNUMERIC( '. ')

------解决方案--------------------
declare @t table(name varchar(100))
insert @t(name)
select '123 '
union all
select '123.45 '


select * from @t where isnumeric(name)=1

------解决方案--------------------
ISNUMERIC
确定表达式是否为一个有效的数字类型。

语法
ISNUMERIC ( expression )

参数
expression

要计算的表达式。

返回类型
int

注释
当输入表达式得数为一个有效的整数、浮点数、money 或 decimal 类型,那么 ISNUMERIC 返回 1;否则返回 0。返回值为 1 确保可以将 expression 转换为上述数字类型中的一种。


------解决方案--------------------
declare @a int
declare @b varchar(10)
declare @c varchar(10)

set @a=1234
set @b= '1234 '
set @c= '1234aa '
select ISNUMERIC(@a)
select ISNUMERIC(@b)
select ISNUMERIC(@c)
-----
1
1
0