SQL Server去重和判是否为数字——OBJECT_ID的下

sql 语句询问时去丢重项:

应用 distinct 去丢还项:

图片 1

率先得显著的视有重复的讳,那么连下就是给我们尝试用 distinct
去再吧。

1   select distinct * from Student

图片 2

咦,怎么没有效果呢?原来,distinct
是基于所查询的字段去重的。* 表示所有的字段,可以明确的收看字段
S_Id 和 S_StuNo
是免可能发再次的,因为一个吗主键和打增长之标识列,一个闹 unique
(唯一)的自律。

既知道了马上或多或少,那下面就是根据 S_Name,S_Sex,S_Height
这三只字段去还吧:

1   select distinct S_Name,S_Sex,S_Height from Student

图片 3

sql判断字符串是否也数字:

主意同样: 使用sql server的置函数 ISNUMERIC():

1   select ISNUMERIC('123')        -- 返回 1 
2   select ISNUMERIC('123.12')    -- 返回 1 
3   select ISNUMERIC('a123.12')    -- 返回 0 
4   select ISNUMERIC('abc')        -- 返回 0 

函数 ISNUMERIC() 返回结果也 1 表示都是数字,结果吧 0
表示来除数字的其余字符,但是“.”(小数点也会为看成其中有)。

方法二: 匹配字符串中是否在除了数字外的外字符(小数点也正是其他字符)

 1 if(('123' not like '%[^0-9]%'))    -- 数字
 2 begin
 3     select '数字'
 4 end
 5 else
 6 begin
 7     select '非数字'
 8 end
 9 
10 if(('a123' not like '%[^0-9]%'))    -- 非数字
11 begin
12     select '数字'
13 end
14 else
15 begin
16     select '非数字'
17 end
18 
19 if(('123.1' not like '%[^0-9]%'))    -- 非数字
20 begin
21     select '数字'
22 end
23 else
24 begin
25     select '非数字'
26 end

理所当然,我们为得根据这种方式,定义一个自定义函数,这个后面再说。

sql 查询有某字段出现极其多次数之价:

1 -- 查询出表 Student 中名字(S_Name)出现次数最多的名字
2   select top 1 S_Name,COUNT(1) from Student group by S_Name order by COUNT(1) desc

sql server [case  when  then  else  end]:

1 select S_StuNo 学号,S_Name 姓名,
2 case S_Sex when '男' then '男生' when '女' then '女生' else '保密' end 性别,        -- 方式一
3 case when S_Sex='男' then '男生' when S_Sex='女' then '女生' else '保密' end 性别,    -- 方式二
4 S_Height 身高
5 from Student

sql OBJECT_ID、OBJECT_NAME、OBJECT_DEFINITION:

 1 if (OBJECT_ID('Student') is not null)    --判断是否存在 Student 这个表
 2 begin
 3     select '表已存在'
 4 end
 5 else
 6 begin
 7     select '表不存在,请创建'
 8 end
 9 
10 --指定一个临时表名,则必须在临时表名前面加上数据库名,例如:
11 IF OBJECT_ID('tempdb..#table1') is not null        --判断临时表 table1 是否存在,
12 select '表已存在'
13 else
14 select '表不存在,请创建'
15 
16 select OBJECT_ID('Student')        -- 返回 245575913  根据对象名称返回对象ID 
17 
18 select OBJECT_NAME('245575913')        -- 返回 Student  根据对象ID返回对象名称
19 
20 select OBJECT_DEFINITION('245575913')    --返回对象的源文本
21 
22 select OBJECT_DEFINITION(OBJECT_ID('Student')) 

示例,返回系统存储过程 sys.sp_columns 的定义:

1 SELECT OBJECT_DEFINITION (OBJECT_ID(N'sys.sp_columns'));

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。

参考:
https://msdn.microsoft.com/zh-cn/library/ms176090.aspx

相关文章