日期:2014-05-17  浏览次数:20571 次

MSSQL2000表字段内容填写要求
MSSQL2000表字段内容填写要求

在表trader_materialcode
有字段列 (本来列的字段类型为VARCHAR(240)) ,前提不能修改。
zd1,zd2,zd3,zd4,zd5,zd6,zd7,zd8,zd9,zd10,zd11,zd12


我想在列内容中录入的是数值型的内容,在触发器中判断,是否为数值型。
不知道如果判断录入的内容是否为数值类型数据,请问有相关函数吗?

------解决方案--------------------
SQL code

select isnumeric('abc') 不是数字,isnumeric('23') 是数字;

------解决方案--------------------
ISNUMERIC ( expression )

------解决方案--------------------
SQL code
isnumeric()

------解决方案--------------------
SQL code

/*
网上经常有些博文说isnumeric不可靠。
例如:
http://blog.csdn.net/cityeremite/article/details/2154781

例如:
http://www.cnblogs.com/kokyu/archive/2012/07/23/2604492.html

等等很多...

我用SQL SERVER 2005做个测试。
*/
select @@version
/*
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) 
    Oct 14 2005 00:33:37 
    Copyright (c) 1988-2005 Microsoft Corporation
    Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 2)
*/

--> 测试数据: @T
declare @T table (col varchar(10))
insert into @T
select '2.1' union all
select '2.1-' union all
select '2,111' union all
select '+21' union all
select '+2.1' union all
select '-2.1' union all
select '-22' union all
select '2-2' union all
select '234a234' union all
select '111aaa' union all
select 'a1'

select * from @T where ISNUMERIC(col)=1
/*
col
----------
2.1
2,111
+21
+2.1
-2.1
-22
*/

--说明isnumeric 是可以判断正负号和千分号和小数点的。