SQL server 检测非数字字段内容 判断是否数字的方法(三种方法)

检测是不是数字型的数据, 三种方法

方法1:ISNUMERIC ( expression )

PATINDEX ( ‘%pattern%’ , expression )

1. ISNUMERIC ( expression )

如果是数字类型则返回 1 ,不是则返回 0

但ISNUMERIC有时是不可靠的,如果你不允许expression包含有任何字母,则会判断错:

如:ISNUMERIC(‘23e4’)返回 1

ISNUMERIC(‘23d4’)返回 1

函数 ISNUMERIC() 返回结果为 1 表示全是数字,结果为 0 表示有除了数字的其他字符,但是“.”(小数点也会被当做其中一部分)。

--检测数据库软件表 软件大小是否为非数字型
SELECT *,ISNUMERIC(软件大小)
  FROM [dbo].[软件数据]
where ISNUMERIC(软件大小) = 0
SQL server 检测非数字字段内容  判断是否数字的方法

方法2:PATINDEX

2. PATINDEX ( ‘%pattern%’ , expression )

返回值为第一个满足pattern的位置, 如果没有满足的则返回值为0

判断是否为数字类型

PATINDEX(’%[^0-9]%’, expression)

返回值为0,则是纯数字类型

对于支持小数点和正负数写法是

PATINDEX(’%[^0-9|.|-|+]%’, expression)

总结:

select ISNUMERIC(’$12’)

–返回0-则为纯数字(支持正负数,小数点)

SELECT PATINDEX(’%[^0-9|.|-|+]%’,‘2.2’)–返回0

–返回0-则为纯整数

select PATINDEX(’%[^0-9]%’, ‘2.89’)–返回非0

方法3:

OBJECT_ID语法: OBJECT_ID ( ‘[ database_name . [ schema_name ] . | schema_name . ] object_name’ [ ,‘object_type’ ] )

参数:

‘ object_name ‘ (必填)

是要使用的对象。 object_name是varchar或nvarchar。 如果object_name是varchar,它将隐式转换为nvarchar。 可以选择是否指定数据库和架构名称。

‘ object_type ‘ (可选)

架构范围的对象类型。 object_type是varchar或nvarchar。 如果object_type是varchar,它将隐式转换为nvarchar。

返回类型:

return int

PS:对于空间索引,OBJECT_ID 返回 NULL。出现错误时,返回 NULL

OBJECT_NAME语法: OBJECT_NAME ( object_id [, database_id ] )

参数:

‘ object_id ‘ (必填)

要使用的对象的 ID。 object_id是int ,假定在指定的数据库中,或在当前数据库上下文中为架构范围的对象。

‘ database_id ‘(可选)

要在其中查找对象的数据库的 ID。 database_id是int。

返回类型:

return nvarchar(max)

PS:出现错误时或调用方没有查看对象的权限时,将返回 NULL。 如果目标数据库的 AUTO_CLOSE 选项设置为 ON,则此函数将打开此数据库。

用户只能查看符合如下条件的安全对象的元数据:该安全对象为该用户所有,或已授予该用户对该安全对象的权限。

也就是说,如果用户对该对象没有任何权限,则那些会生成元数据的内置函数(如 OBJECT_NAME)可能返回 NULL

OBJECT_DEFINITION语法:OBJECT_DEFINITION ( object_id )

参数:

‘ object_id ‘ (必填)

要使用的对象的 ID。 object_id是int,和假定以表示当前的数据库上下文中的对象。

返回类型:

return nvarchar(max)

PS:出现错误时或调用方没有查看对象的权限时,将返回 NULL


		
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论