设为首页 收藏本站
查看: 1743|回复: 0

[经验分享] SQL Server去重和判断是否为数字——OBJECT_ID的使用

[复制链接]

尚未签到

发表于 2017-12-13 22:30:47 | 显示全部楼层 |阅读模式
  sql 语句查询时去掉重复项:
  使用 distinct 去掉重复项:
DSC0000.png

  首先可以明确的看到存在重复的名字,那么接下来就让我们试试使用 distinct 去重吧。
  

   select distinct * from Student  

DSC0001.png

  咦,怎么没效果呢?原来,distinct 是根据所查询的字段去重的。* 表示所有的字段,可以明确的看到字段 S_Id 和 S_StuNo 是不可能有重复的,因为一个为主键和自增长的标识列,一个有 unique (唯一)的约束。
  既然明白了这一点,那下面就根据 S_Name,S_Sex,S_Height 这三个字段去重吧:
  

   select distinct S_Name,S_Sex,S_Height from Student  

DSC0002.png

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

方法一: 使用sql server的内置函数 ISNUMERIC():

  

   select ISNUMERIC('123')  
   select ISNUMERIC('123.12')   
  
   select ISNUMERIC('a123.12')   
  
   select ISNUMERIC('abc')        
  


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

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

  

if(('123' not like '%[^0-9]%'))  
begin
  
     select '数字'
  
end
  
else
  
begin
  
     select '非数字'
  
end
  

  
if(('a123' not like '%[^0-9]%'))   
  
begin
  
     select '数字'
  
end
  
else
  
begin
  
     select '非数字'
  
end
  

  
if(('123.1' not like '%[^0-9]%'))   
  
begin
  
     select '数字'
  
end
  
else
  
begin
  
     select '非数字'
  
end
  

  当然,我们也可以根据这种方式,定义一个自定义函数,这个后面再说。
  sql 查询出某字段出现最多次数的值:
  

  
   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]:
  

select S_StuNo 学号,S_Name 姓名,  

case S_Sex when '男' then '男生' when '女' then '女生' else '保密' end 性别,  
case when S_Sex='男' then '男生' when S_Sex='女' then '女生' else '保密' end 性别,   
  
S_Height 身高
  
from Student
  

  sql OBJECT_ID、OBJECT_NAME、OBJECT_DEFINITION:
  

if (OBJECT_ID('Student') is not null)  
begin
  
     select '表已存在'
  
end
  
else
  
begin
  
     select '表不存在,请创建'
  
end
  

  

  
IF OBJECT_ID('tempdb..#table1') is not null        
  
select '表已存在'
  
else
  
select '表不存在,请创建'
  

  
select OBJECT_ID('Student')        
  

  
select OBJECT_NAME('245575913')        
  

  
select OBJECT_DEFINITION('245575913')   
  

  
select OBJECT_DEFINITION(OBJECT_ID('Student'))
  

  

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

  

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 ' (必填)

  要使用的对象的>  ' database_id '(可选)

  要在其中查找对象的数据库的>  返回类型:
  return nvarchar(max)
  PS:出现错误时或调用方没有查看对象的权限时,将返回 NULL。 如果目标数据库的 AUTO_CLOSE 选项设置为 ON,则此函数将打开此数据库。
  用户只能查看符合如下条件的安全对象的元数据:该安全对象为该用户所有,或已授予该用户对该安全对象的权限。
  也就是说,如果用户对该对象没有任何权限,则那些会生成元数据的内置函数(如 OBJECT_NAME)可能返回 NULL。
  

OBJECT_DEFINITION语法:OBJECT_DEFINITION ( object_id )  参数:
  ' object_id ' (必填)

  要使用的对象的>  返回类型:
  return nvarchar(max)
  PS:出现错误时或调用方没有查看对象的权限时,将返回 NULL。
  参考:
  https://msdn.microsoft.com/zh-cn/library/ms176090.aspx

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-423834-1-1.html 上篇帖子: SQL Server 的collate的含义 下篇帖子: SQL SERVER将多行数据合并成一行(转载)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表