SQL Server去重和判断是否为数字——OBJECT_ID的使用
sql 语句查询时去掉重复项:
使用 distinct 去掉重复项:

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

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

sql判断字符串是否为数字:
方法一: 使用sql server的内置函数 ISNUMERIC():
select ISNUMERIC('') -- 返回 1
select ISNUMERIC('123.12') -- 返回 1
select ISNUMERIC('a123.12') -- 返回 0
select ISNUMERIC('abc') -- 返回 0
函数 ISNUMERIC() 返回结果为 1 表示全是数字,结果为 0 表示有除了数字的其他字符,但是“.”(小数点也会被当做其中一部分)。
方法二: 匹配字符串中是否存在除了数字之外的其他字符(小数点也算作其他字符)
if(('' 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 查询出某字段出现最多次数的值:
-- 查询出表 Student 中名字(S_Name)出现次数最多的名字
select top 1 S_Name,COUNT() from Student group by S_Name order by COUNT() 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) --判断是否存在 Student 这个表
begin
select '表已存在'
end
else
begin
select '表不存在,请创建'
end
--指定一个临时表名,则必须在临时表名前面加上数据库名,例如:
IF OBJECT_ID('tempdb..#table1') is not null --判断临时表 table1 是否存在,
select '表已存在'
else
select '表不存在,请创建'
select OBJECT_ID('Student') -- 返回 245575913 根据对象名称返回对象ID
select OBJECT_NAME('') -- 返回 Student 根据对象ID返回对象名称
select OBJECT_DEFINITION('') --返回对象的源文本
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 ' (必填)
要使用的对象的 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
SQL Server去重和判断是否为数字——OBJECT_ID的使用的更多相关文章
- 在Sql Server触发器中判断操作是Insert还是Update还是Delete
在Sql Server触发器中判断操作是Insert还是Update还是Delete DECLARE @IsInsert bit, @IsUpdate bit, @IsDelete ...
- SQL SERVER 将表中字符串转换为数字的函数 (详询请加qq:2085920154)
在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:1. convert(int,字段名) 例如:select convert(int,'3')2. cast(字段名 as i ...
- SQL Server数据库存在判断语句及系统表简介 转
Transact-SQL Exists Sentences--判断数据库是否存在IF EXISTS(SELECT * FROM master.sysdatabases WHERE name=N'库名' ...
- SQL Server数据库存在判断语句及系统表简介
Transact-SQL Exists Sentences--判断数据库是否存在IF EXISTS(SELECT * FROM master.sysdatabases WHERE name=N'库名' ...
- SQL Server IF Exists 判断数据库对象是否存在的用法
1 判断数据库是否存在Sql代码 if exists (select * from sys.databases where name = ’数据库名’) drop database [数据库名] ...
- Sql Server,如何去含有非数字的nvarchar,再转为为数值
菜鸟一枚,今天做项目时,突然遇到一个问题: 在数据库中中存放的nvarchar类型的“时间”,例如:‘08:00’,而我需要进行时间的范围比较,这时就想到了将nvarchar类型转化为int类型. 这 ...
- sql server case when 判断为空
代码如下 select distinct G.* ,(select BUSINESS_NAME from BusinessInfo where BusinessInfo.BUSINESS_BID=G. ...
- sql server生成自动增长的字母数字字符串
在开发的过程中,我们经常会遇到要生成一些固定格式字符串,例如“BX201903150001”,结构为:BX+日期+N位序号,类似这种的字符串我们很难生成,在这里我们借助一个存储过程来实现这个功能. 1 ...
- SQL Server提取字段中的所有数字
今天公司项目中遇到了一个需求,要求提取用户电话号码字段中的所有电话信息. 由于该字段在项目最初设计中没有严格控制数据质量,导致用户在输入时包含了很多非电话的信息,如用户名字等(136 **** *** ...
随机推荐
- 【BZOJ】1079: [SCOI2008]着色方案(dp+特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=1079 只能想到5^15的做法...........................果然我太弱. 其实 ...
- 【noip模拟题】挖掘机(模拟题+精度)
这题直接模拟. 可是我挂在了最后两个点上QAQ.唯一注意的是注意精度啊...用来double后边转成整数就忘记用longlong...sad #include <cstdio> #incl ...
- 【BZOJ】1620: [Usaco2008 Nov]Time Management 时间管理(贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=1620 一开始想不通啊.. 其实很简单... 每个时间都有个完成时间,那么我们就从最大的 完成时间的开 ...
- python入门(九):网络编程和多线程
一.网络编程 Socket简介 Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. ...
- ios应用, 设置不自己主动备份到iCloud
原创文章,转载请注明出处 ios项目,假设有内置下载或者程序动态生成文件的话,就要注意所下载或生成的文件,要不要自己主动备份到iCloud 假设没有合适的理由就自己主动上传大文件的话,可能在不能通过应 ...
- 第十五篇:C程序的存储空间布局
前言 C语言程序的执行必定需要耗费一定的资源,也就是说,程序在计算机内部的映像不可能就单单代码. 本文将讲解C语言程序在计算机内部的存在方式. 程序存储空间 1. 正文段:程序的机器指令部分 2. 初 ...
- android高仿微信UI点击头像显示大图片效果, Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果
http://www.cnblogs.com/Jaylong/archive/2012/09/27/androidUI.html http://blog.csdn.net/xiaanming/arti ...
- angular4 组件间通信
父传子用@input 子传父用@output 例:子组件 <p> <span *ngFor="let star of stars;let i=index" cla ...
- 160408、SpringMVC整合Shiro
第一步:配置web.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <!-- 配置Shiro过滤器,先让Shiro过滤系统接收到的请求 --> ...
- Windows MFC 打开文本
MFC的CFileDialog自动封装了文件相关的对话框,提供一种简单的文件打开和文件存盘对话框功能. 要使用CFileDialog类,首先要构造一个对象, 项目实例: CFileDialog fil ...