having 字句用在分组函数之后 对分组后条件筛选
top 与 row_number() over(order by ***)
distinct 去重复
len计算长度 与 datalength计算字节数
substring(字符,第几个,length)
abs()计算绝对值
union 与 union all
power()计算指数 sqrt()计算平方根 ceiling()与floor()、round(待舍的数,精度)
sin() 、cos()、asin()、acos()、tan()、atan()、cot()、acot()
pi()取π值
degrees()弧度制转角度制 radians()角度制转弧度制
sign(参数)参数>0 1 参数=0 0 参数<0 -1
mssql 求余 %
log()求一个数的自然数对数
log10()求一个数以10为底的对数值
log(m,n)求以m为底n的对数
lower()将字符串转化为小写 upper
ltrim()、rtrim()、trim()
CHARINDEX('sd','asdfghjk') 查询子字符串在指定字符串中的位置,如果不存在则返回0
left(string,length)从左侧开始取任意长度的字符串 right()
REPLACE('woshidasb','wo','ni')替换指定字符串
ascii()获取第一个字符的ascii值 char()与ascii()方法相反
DIFFERENCE(FName,'Merry')计算每个人的姓名发音与“Merry”的相似度,然后返回一个0
至4之间的一个值来反映两个字符串的发音相似度,这个值越大则表示两个字符串发音思想度
越大。
SELECT CONVERT(VARCHAR(50) ,GETDATE( ), 101) as 当前日期
SELECT CONVERT(VARCHAR(50) ,GETDATE(), 108) as 当前时间
DATEADD(datepart , number, date )函数用于进行日期时间的加法运算
DATEDIFF( datepart , startdate , enddate )函数用于计算两个日期之间的差额
DATENAME(datepart,date)函数,这个函数可以返回一个日期的特定部分,并
且尽量用名称来表述这个特定部分
CAST ( expression AS data_type)
CONVERT ( data_type, expression)
参数expression为待进行类型转换的表达式,而type为转换的目标类型
COALESCE ( expression,value1,value2……,valuen)
COALESCE()函数的第一个参数expression为待检测的表达式,而其后的参数个数不定。
COALESCE()函数将会返回包括expression在内的所有参数中的第一个非空表达式。如果
expression不为空值则返回expression;否则判断value1是否是空值,如果value1不为空值则返
回value1;否则判断value2是否是空值,如果value2不为空值则返回value3;……以此类推,
ISNULL(expression,value)
NULLIF ( expression1 , expression2 )
如果两个表达式不等价,则 NULLIF 返回第一个 expression1的值。如果两个表达式等
价,则 NULLIF 返回第一个 expression1类型的空值。也就是返回类型与第一个 expression
相同。
case的两种用法
SELECT
FName,
(CASE FLevel
WHEN 1 THEN 'VIP客户'
WHEN 2 THEN '高级客户'
WHEN 3 THEN '普通客户'
ELSE '客户类型错误'
END) as FLevelName
FROM T_Customer
SELECT
FName,
FWeight,
(CASE
WHEN FWeight<40 THEN 'thin'
WHEN FWeight>50 THEN 'fat'
ELSE 'ok'
END) as isnormal
FROM T_Person
PATINDEX('%_m%',FName) 查找每个人的姓名中第一个长度为2并且第二个字符为m的子字
符串的位置:
REPLICATE (str,count)
参数str为子字符串,而count为重复次数。
REVERSE()函数用来将一个字符串的顺序颠倒
ISDATE()函数用来确定输入表达式是否为有效日期
ISNUMERIC ()函数用来确定表达式是否为有效的数值类型。
APP_NAME()函数返回当前会话的应用程序名称;CURRENT_USER函数(注意这个函
数不能带括号调用)返回当前登陆用户名;HOST_NAME()函数返回工作站名
NEWID()
索引
CREATE [UNIQUE(唯一)|CLUSTERED(聚簇)] INDEX idx_person_nameage ON T_Person(FName,FAge)
DROP INDEX 索引名 ON 表名
定义复合唯一约束需要定义在所有字段列表之后,语法如下:
CONSTRAINT 约束名 UNIQUE(字段1,字段2……字段n)
ALTER TABLE 表名 ADD CONSTRAINT 唯一约束名 UNIQUE(字段1,字段2……字段n)
SET ANSI_NULLS {ON | OFF} 对null的取值on is null
当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔
PARTITION BY
开窗函数的OVER关键字后括号中的可以使用PARTITION BY 子句来定义行的分
区来供进行聚合计算。与GROUP BY 子句不同,PARTITION BY 子句创建的分区是独
立于结果集的,创建的分区只是供进行聚合计算的,而且不同的开窗函数所创建的分区
也不互相影响。下面的SQL语句用于显示每一个人员的信息以及所属城市的人员数:
SELECT FName,FCITY , FAGE , FSalary,
COUNT(*) OVER(PARTITION BY FCITY)
FROM T_Person
备份表
select * into dbo.bf_Table_产品档案_标准工时表_裁剪 from dbo.Table_产品档案_标准工时表_裁剪
top 与 row_number() over(order by ***)
distinct 去重复
len计算长度 与 datalength计算字节数
substring(字符,第几个,length)
abs()计算绝对值
union 与 union all
power()计算指数 sqrt()计算平方根 ceiling()与floor()、round(待舍的数,精度)
sin() 、cos()、asin()、acos()、tan()、atan()、cot()、acot()
pi()取π值
degrees()弧度制转角度制 radians()角度制转弧度制
sign(参数)参数>0 1 参数=0 0 参数<0 -1
mssql 求余 %
log()求一个数的自然数对数
log10()求一个数以10为底的对数值
log(m,n)求以m为底n的对数
lower()将字符串转化为小写 upper
ltrim()、rtrim()、trim()
CHARINDEX('sd','asdfghjk') 查询子字符串在指定字符串中的位置,如果不存在则返回0
left(string,length)从左侧开始取任意长度的字符串 right()
REPLACE('woshidasb','wo','ni')替换指定字符串
ascii()获取第一个字符的ascii值 char()与ascii()方法相反
DIFFERENCE(FName,'Merry')计算每个人的姓名发音与“Merry”的相似度,然后返回一个0
至4之间的一个值来反映两个字符串的发音相似度,这个值越大则表示两个字符串发音思想度
越大。
SELECT CONVERT(VARCHAR(50) ,GETDATE( ), 101) as 当前日期
SELECT CONVERT(VARCHAR(50) ,GETDATE(), 108) as 当前时间
DATEADD(datepart , number, date )函数用于进行日期时间的加法运算
DATEDIFF( datepart , startdate , enddate )函数用于计算两个日期之间的差额
DATENAME(datepart,date)函数,这个函数可以返回一个日期的特定部分,并
且尽量用名称来表述这个特定部分
CAST ( expression AS data_type)
CONVERT ( data_type, expression)
参数expression为待进行类型转换的表达式,而type为转换的目标类型
COALESCE ( expression,value1,value2……,valuen)
COALESCE()函数的第一个参数expression为待检测的表达式,而其后的参数个数不定。
COALESCE()函数将会返回包括expression在内的所有参数中的第一个非空表达式。如果
expression不为空值则返回expression;否则判断value1是否是空值,如果value1不为空值则返
回value1;否则判断value2是否是空值,如果value2不为空值则返回value3;……以此类推,
ISNULL(expression,value)
NULLIF ( expression1 , expression2 )
如果两个表达式不等价,则 NULLIF 返回第一个 expression1的值。如果两个表达式等
价,则 NULLIF 返回第一个 expression1类型的空值。也就是返回类型与第一个 expression
相同。
case的两种用法
SELECT
FName,
(CASE FLevel
WHEN 1 THEN 'VIP客户'
WHEN 2 THEN '高级客户'
WHEN 3 THEN '普通客户'
ELSE '客户类型错误'
END) as FLevelName
FROM T_Customer
SELECT
FName,
FWeight,
(CASE
WHEN FWeight<40 THEN 'thin'
WHEN FWeight>50 THEN 'fat'
ELSE 'ok'
END) as isnormal
FROM T_Person
PATINDEX('%_m%',FName) 查找每个人的姓名中第一个长度为2并且第二个字符为m的子字
符串的位置:
REPLICATE (str,count)
参数str为子字符串,而count为重复次数。
REVERSE()函数用来将一个字符串的顺序颠倒
ISDATE()函数用来确定输入表达式是否为有效日期
ISNUMERIC ()函数用来确定表达式是否为有效的数值类型。
APP_NAME()函数返回当前会话的应用程序名称;CURRENT_USER函数(注意这个函
数不能带括号调用)返回当前登陆用户名;HOST_NAME()函数返回工作站名
NEWID()
索引
CREATE [UNIQUE(唯一)|CLUSTERED(聚簇)] INDEX idx_person_nameage ON T_Person(FName,FAge)
DROP INDEX 索引名 ON 表名
定义复合唯一约束需要定义在所有字段列表之后,语法如下:
CONSTRAINT 约束名 UNIQUE(字段1,字段2……字段n)
ALTER TABLE 表名 ADD CONSTRAINT 唯一约束名 UNIQUE(字段1,字段2……字段n)
SET ANSI_NULLS {ON | OFF} 对null的取值on is null
当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔
PARTITION BY
开窗函数的OVER关键字后括号中的可以使用PARTITION BY 子句来定义行的分
区来供进行聚合计算。与GROUP BY 子句不同,PARTITION BY 子句创建的分区是独
立于结果集的,创建的分区只是供进行聚合计算的,而且不同的开窗函数所创建的分区
也不互相影响。下面的SQL语句用于显示每一个人员的信息以及所属城市的人员数:
SELECT FName,FCITY , FAGE , FSalary,
COUNT(*) OVER(PARTITION BY FCITY)
FROM T_Person
备份表
select * into dbo.bf_Table_产品档案_标准工时表_裁剪 from dbo.Table_产品档案_标准工时表_裁剪