SqlServer验证时间和数值,使用ISDATE ( expression ) 和ISNUMERIC ( expression )
ISDATE
ISDATE
确定输入表达式是否为有效的日期。
语法
ISDATE ( expression )
参数
expression
一个表达式,将要验证它是否为一个日期。expression 是任何返回 varchar 数据类型的表达式。
返回类型
int
示例
A. 使用 ISDATE 检查变量
下面的示例检查 @datestring 局部变量是否为有效的日期。
DECLARE @datestring varchar(8)
SET @datestring = '12/21/98'
SELECT ISDATE(@datestring)
下面是结果集:
-----------
1
B. 使用 ISDATE 检查列是否为有效的日期
下面的示例创建 test_dates 表,并且插入两个值。使用 ISDATE 以确定列中的值是否为日期。
USE tempdb
CREATE TABLE test_dates (Col_1 varchar(15), Col_2 datetime)
GO
INSERT INTO test_dates VALUES ('abc', 'July 13, 1998')
GO
SELECT ISDATE(Col_1) AS Col_1, ISDATE(Col_2) AS Col_2
FROM test_dates
下面是结果集:
Col_1 Col_2
----------------- --------------------
0 1
ISNUMERIC
ISNUMERIC
确定表达式是否为一个有效的数字类型。
语法
ISNUMERIC ( expression )
参数
expression
要计算的表达式。
返回类型
int
注释
当输入表达式得数为一个有效的整数、浮点数、money 或 decimal 类型,那么 ISNUMERIC 返回 1;否则返回 0。返回值为 1 确保可以将 expression 转换为上述数字类型中的一种。
示例
A. 使用 ISNUMERIC
下面的示例返回 1,这是因为 zip 列包含有效的数值。
USE pubs
SELECT ISNUMERIC(zip)
FROM authors
GO
B. 使用 ISNUMERIC 和 SUBSTRING
下面的示例对于 titles 表中的所有书名都返回 0,这是因为没有一个书名是有效的数值。
USE pubs
GO
-- Because the title column is all character data, expect a result of 0
-- for the ISNUMERIC function.
SELECT SUBSTRING(title, 1, 15) type, price, ISNUMERIC(title)
FROM titles
GO
下面是结果集:
type price
--------------- -------------------------- -----------
The Busy Execut 19.99 0
Cooking with Co 11.95 0
You Can Combat 2.99 0
Straight Talk A 19.99 0
Silicon Valley 19.99 0
The Gourmet Mic 2.99 0
The Psychology (null) 0
But Is It User 22.95 0
Secrets of Sili 20.00 0
Net Etiquette (null) 0
Computer Phobic 21.59 0
Is Anger the En 10.95 0
Life Without Fe 7.00 0
Prolonged Data 19.99 0
Emotional Secur 7.99 0
Onions, Leeks, 20.95 0
Fifty Years in 11.95 0
Sushi, Anyone? 14.99 0
(18 row(s) affected)