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('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 |