sql server中部分函数功能详解

摘要:
当length为正数时,numeric_expression四舍五入为length所指定的小数位数。当length为负数时,numeric_expression则按length所指定的在小数点的左边四舍五入。SQLHAVING语法SELECTcolumn_name,aggregate_functionFROMtable_nameWHEREcolumn_nameoperatorvalueGROUPBYcolumn_nameHAVINGaggregate_functionoperatorvalueHaving只用于查询条件中有合计函数的。结果是等于date2-date1的日期部分的带符号整数值。若select子句中包含聚合函数,则聚合函数返回每个组的信息若指定groupby时,select语句后的所有非聚合函数字段必须出现在groupby列表中。style指定CONVERT函数如何转换expression的整数表达式。语法DATEADDdate参数是合法的日期表达式。
1.TOP 子句

TOP 子句用于规定要返回的记录的数目。

对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。

SQL Server 的语法:

SELECT TOP number|percent column_name(s)

FROM table_name

2.’%%’查询

我们希望从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons

WHERE City LIKE '[ALN]%'

3. IN 操作符实例

现在,我们希望从上表中选取姓氏为 Adams 和 Carter 的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons

WHERE LastName IN ('Adams','Carter')

4. LEN() 函数

LEN 函数返回文本字段中值的长度。

SQL LEN() 语法

SELECT LEN(column_name) FROM table_name

5. ROW_NUMBER()OVER()函数

ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2)表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

6. ROUND 函数

用于把数值字段舍入为指定的小数位数。

语法

ROUND ( numeric_expression , length [ , function ] )

参数

numeric_expression

精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

length是 numeric_expression 将要四舍五入的精度。length 必须是 tinyint、smallint 或int。当 length 为正数时,numeric_expression 四舍五入为 length 所指定的小数位数。当 length 为负数时,numeric_expression 则按 length 所指定的在小数点的左边四舍五入。

7.HAVING 子句

在 SQL 中增加 HAVING 子句原因是WHERE 关键字无法与合计函数一起使用。

SQL HAVING 语法

SELECT column_name, aggregate_function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name

HAVING aggregate_function(column_name) operator value

Having 只用于查询条件中有合计函数的。

8. ISNULL函数

(1)ISNULL
使用指定的替换值替换 NULL。
语法
ISNULL ( check_expression , replacement_value )

这里isnull用于查询字段里

(2)

case when isnull(b.c_delivery_type,'')='' then b.c_delivery_type else a.c_delivery_type end as 物流方式

null是特殊的值,他不能被进行比较,所以=<>等这些符号是不能判断null的,所以isnull(字段名,'')='',把null转换成'',再和''比较,而字段名='',由于没有处理null的情况,所以如果字段有null值,将被忽略

9.union 用法

分为union与union all
union 缺省在合并结果集后消除重复项,

union all 指定在合并结果集后保留重复项,
打个比喻吧 比如A表的数据是 A{ 1,4,5,9} B{2,3,4,5}
那我执行此语句 select * from A union select * from B 那结果是{1,2,3,4,5,9}
如果执行select * from A union all select * from B 结果是{1,2,3,4,4,5,5,9}

10. DateDiff()

DATEDIFF 函数计算指定的两个日期中第二个日期与第一个日期的时间差的日期部分。换句话说,它得 出两个日期之间的间隔。结果是等于 date2 - date1 的日期部分的带符号整数值。

表达式DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]])

允许数据类型: timeinterval 表示相隔时间的类型,代码为:

年份 yy、yyyy 季度 qq、q

月份 mm、m

每年的某一日 dy、y

日期 dd、d

星期 wk、ww

工作日 dw

小时 hh

分钟 mi、n

秒 ss、s

毫秒 ms

11. datepart()函数

DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

DATEPART(datepart,date)

date 参数是合法的日期表达式。datepart 参数可以是下列的值:

datepart

缩写

yy, yyyy

季度

qq, q

mm, m

年中的日

dy, y

dd, d

wk, ww

星期

dw, w

小时

hh

分钟

mi, n

ss, s

毫秒

ms

微妙

mcs

纳秒

ns

12. join函数

sqlleft joinright joininner join的区别

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行

13. group by

group by 对结果集分组,针对每一组返回一行。

若select子句中包含聚合函数,则聚合函数返回每个组的信息

若指定group by时,select语句后的所有非聚合函数字段必须出现在group by列表中。

14. cast()

Cast()函数是转换数据类型的

CAST 和 CONVERT (Transact-SQL),将一种数据类型表达式转换为另一种数据类型的表达式

Transact-SQL 语法约定

语法

Syntax for CAST:

CAST ( expression AS data_type [ (length ) ])

Syntax for CONVERT:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

参数

expression

任何有效的表达式

data_type

目标数据类型。这包括 xml、bigint 和 sql_variant。不能使用别名数据类型。有关可用数据类型的详细信息,请参阅数据类型 (Transact-SQL)。

length

指定目标数据类型长度的可选整数。默认值为 30。

style

指定 CONVERT 函数如何转换 expression 的整数表达式。如果样式为 NULL,则返回 NULL。该范围是由 data_type 确定的。有关详细信息,请参阅“备注”部分。

15. dateadd()

定义和用法

DATEADD() 函数在日期中添加或减去指定的时间间隔。

语法

DATEADD(datepart,number,date)

date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。

datepart 参数可以是下列的值:

datepart

缩写

yy, yyyy

季度

qq, q

mm, m

年中的日

dy, y

dd, d

wk, ww

星期

dw, w

小时

hh

分钟

mi, n

ss, s

毫秒

ms

微妙

mcs

纳秒

ns

16. datepart()

定义和用法

DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

语法

DATEPART(datepart,date)

date 参数是合法的日期表达式。datepart 参数可以是下列的值:

datepart

缩写

yy, yyyy

季度

qq, q

mm, m

年中的日

dy, y

dd, d

wk, ww

星期

dw, w

小时

hh

分钟

mi, n

ss, s

毫秒

ms

微妙

mcs

纳秒

ns

17. charindex() substring()

SQL CHARINDEX

函数返回字符或者字符串在另一个字符串中的起始位置

CHARINDEX

函数调用方法如下:

CHARINDEX ( expression1 , expression2 [ , start_location ] )

Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在

expression2中找expression1的位置。SQL CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置

select substring('123,456',charindex(',','123,456') ,len('123.456')-3) 结果: ',456'
意思:截取’123,456‘ 从第4为开始截取 4位
substring(字段,第几个字符开始截取,截取长度)
charindex(',','123,456') ‘,’的位置 结果为:4
len('123.456') 字段长度 结果为:7

18. decimal()

decimal(a,b)
a指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。
b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0。

19. right()

反回字符右边的指定长度的字符

例:select right('1234',2)
结果:34

20. 取整函数

1 trunc(value,precision)按精度(precision)截取某个数字,不进行舍入操作。
2 round(value,precision)根据给定的精度(precision)进行四舍五入。
3 ceil (value) 产生大于或等于指定值(value)的最小整数。
4 floor(value)与 ceil()相反,产生小于或等于指定值(value)的最小整数。
5 sign(value) 与绝对值函数ABS()相反。ABS()给出的是值的量而不是其符号,sign(value)则给出值的符号而不是量。

21. partition by

partition by的作用仅用于分组

22.convert()

定义和用法

CONVERT() 函数是把日期转换为新数据类型的通用函数。

CONVERT() 函数可以用不同的格式显示日期/时间数据。

语法

CONVERT(data_type(length),data_to_be_converted,style)

data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。

可以使用的 style 值:

Style ID

Style 格式

100 或者 0

mon dd yyyy hh:miAM (或者 PM)

101

mm/dd/yy

102

yy.mm.dd

103

dd/mm/yy

104

dd.mm.yy

105

dd-mm-yy

106

dd mon yy

107

Mon dd, yy

108

hh:mm:ss

109 或者 9

mon dd yyyy hh:mi:ss:mmmAM(或者 PM)

110

mm-dd-yy

111

yy/mm/dd

112

yymmdd

113 或者 13

dd mon yyyy hh:mm:ss:mmm(24h)

114

hh:mi:ss:mmm(24h)

120 或者 20

yyyy-mm-dd hh:mi:ss(24h)

121 或者 21

yyyy-mm-dd hh:mi:ss.mmm(24h)

126

yyyy-mm-ddThh:mm:ss.mmm(没有空格)

130

dd mon yyyy hh:mi:ss:mmmAM

131

dd/mm/yy hh:mi:ss:mmmAM

实例

下面的脚本使用 CONVERT() 函数来显示不同的格式。我们将使用 GETDATE() 函数来获得当前的日期/时间:

CONVERT(VARCHAR(19),GETDATE())

CONVERT(VARCHAR(10),GETDATE(),110)

CONVERT(VARCHAR(11),GETDATE(),106)

CONVERT(VARCHAR(24),GETDATE(),113)

结果类似:

Dec 29 2008 11:45 PM

12-29-2008

29 Dec 08

29 Dec 2008 16:25:46.635

语句及查询结果:
SELECTCONVERT(varchar(100),GETDATE(),0):0516200610:57AM
SELECTCONVERT(varchar(100),GETDATE(),1):05/16/06
SELECTCONVERT(varchar(100),GETDATE(),2):06.05.16
SELECTCONVERT(varchar(100),GETDATE(),3):16/05/06
SELECTCONVERT(varchar(100),GETDATE(),4):16.05.06
SELECTCONVERT(varchar(100),GETDATE(),5):16-05-06
SELECTCONVERT(varchar(100),GETDATE(),6):160506
SELECTCONVERT(varchar(100),GETDATE(),7):0516,06
SELECTCONVERT(varchar(100),GETDATE(),8):10:57:46
SELECTCONVERT(varchar(100),GETDATE(),9):0516200610:57:46:827AM
SELECTCONVERT(varchar(100),GETDATE(),10):05-16-06
SELECTCONVERT(varchar(100),GETDATE(),11):06/05/16
SELECTCONVERT(varchar(100),GETDATE(),12):060516
SELECTCONVERT(varchar(100),GETDATE(),13):1605200610:57:46:937
SELECTCONVERT(varchar(100),GETDATE(),14):10:57:46:967
SELECTCONVERT(varchar(100),GETDATE(),20):2006-05-1610:57:47
SELECTCONVERT(varchar(100),GETDATE(),21):2006-05-1610:57:47.157
SELECTCONVERT(varchar(100),GETDATE(),22):05/16/0610:57:47AM
SELECTCONVERT(varchar(100),GETDATE(),23):2006-05-16
SELECTCONVERT(varchar(100),GETDATE(),24):10:57:47
SELECTCONVERT(varchar(100),GETDATE(),25):2006-05-1610:57:47.250
SELECTCONVERT(varchar(100),GETDATE(),100):0516200610:57AM
SELECTCONVERT(varchar(100),GETDATE(),101):05/16/2006
SELECTCONVERT(varchar(100),GETDATE(),102):2006.05.16
SELECTCONVERT(varchar(100),GETDATE(),103):16/05/2006
SELECTCONVERT(varchar(100),GETDATE(),104):16.05.2006
SELECTCONVERT(varchar(100),GETDATE(),105):16-05-2006
SELECTCONVERT(varchar(100),GETDATE(),106):16052006
SELECTCONVERT(varchar(100),GETDATE(),107):0516,2006
SELECTCONVERT(varchar(100),GETDATE(),108):10:57:49
SELECTCONVERT(varchar(100),GETDATE(),109):0516200610:57:49:437AM
SELECTCONVERT(varchar(100),GETDATE(),110):05-16-2006
SELECTCONVERT(varchar(100),GETDATE(),111):2006/05/16
SELECTCONVERT(varchar(100),GETDATE(),112):20060516
SELECTCONVERT(varchar(100),GETDATE(),113):1605200610:57:49:513
SELECTCONVERT(varchar(100),GETDATE(),114):10:57:49:547
SELECTCONVERT(varchar(100),GETDATE(),120):2006-05-1610:57:49
SELECTCONVERT(varchar(100),GETDATE(),121):2006-05-1610:57:49:000

23 Sql Server REPLACE函数的使用

REPLACE
用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。

Replace(‘123456’,’23’,’9’)

将123456中的23用9替换掉

24 str(a,b,c)函数

将数值型转换成指定长度的字符串

如select STR(12345.633,7,1) 结果为12345.6

第一个参数是要转换的数值,

第二个参数是转换後的总长度(含小数点,正负号),

第三个参数为小数位

25 .INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

26. select 1 from table

Select 1 from table 是查询表的数据有多少,select * from table是查询表的所有数据的详细信息

27.rand()函数

SQL RAND函数调用​可以产生随机数

Select rand()获取介于0和1之间的一个数(小数)

Select rand()*10获取0和10之间的一个数(小数)

Select str(rand()*10)获取0和10之间的一个数(整数)

Select str(rand()*10000) 获取0和10000之间的一个数(整数)

28.存储过程中的SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 语句用法

SET QUOTED_IDENTIFIER 为ON时,标识符可以由双引号分隔,文字必须由单引号分隔

SET ANSI_NULLS,就是说NULL是否可以进行=和<>比较;

当设置为ON 时,表示不可以进行比较,凡是进行比较的,结果都为0

当设置为 OFF时,表示可以进行比较,比较的结果就是实际结果

29. ISNUMERIC

判断参数是否是纯数字型

30.rtrim函数

截断所有尾随空格后返回一个字符串。

免责声明:文章转载自《sql server中部分函数功能详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux DNS 服务器配置与管理关于Mail协议的SMTP、POP3和IMAP下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Oracle11g温习-第九章:表空间和数据文件管理

2013年4月27日 星期六 10:37 1、tablespace 功能:从逻辑上简化数据库的管理 2、tablespace 概述 一个database 对应多个tablespace ,一个tablespace 可以对应一个datafile ,也可以多个 Oracle 10g,最少有两个系统表空间:system 和sysaux 用来存放数据字典信息...

MYSQL SQL语句 之 select

select语句在数据库操作中是操作频率最高的语句,使用方式也是多种多样,它的基本功能是:从表中选取数据,结果存储在一个结果集中。可以联合where,and,or,Order By,distinct,top, like,等一起使用。 一. select 最基本的用法如下: select 字段 from 表名 字段是什么,选出的结果集中就包括什么字段 例如:...

DB2查询前100到后200之间的数据

select T.sicCd form Table T where T.sicCd not in ( select sicCd form Table fetch first 100 rows only ) fetch first 100 rows only...

数据库系列(三)之 锁

锁的意义      数据库中有很多‘锁’的使用。怎么合理并灵活的应用是一个值得讨论深究的问题。      锁为何而存在?为了在同一时间内,只能处理一种请求。而避免导致的数据错乱。例如商城中,库存的扣减;金融系统中金钱的转账。      在耳熟能详的商城中,库存扣减有很多种方法来处理,其中数据库锁是很大众的一种方式。在应用程序中,存在着多个用户同一时间购...

【总结】数据库优化的若干方法

导图 下图是我结合自己的经验以及搜集整理的数据库优化相关内容的思维导图,如果图片不清楚,可以在浏览器中右键,在新窗口中查看(Chrome)或者查看图像(FireFox)。 常用关键字优化 在编写T-SQL的时候,会使用很多功能类似的关键字,比如COUNT和EXISTS、IN和BETWEEN AND等,我们往往会根据需求直奔主题地来编写查询脚本,完成需求要...

insert时出现主键冲突的处理方法【转载】

原文出处:http://hi.baidu.com/ytjwt/blog/item/1ccc2c26022b0608908f9d8c.html 使用"insert into"语句进行数据库操作时可能遇到主键冲突,用户需要根据应用场景进行忽略或者覆盖等操作。总结下,有三种解决方案来避免出错。1. insert ignore into遇主键冲突,保持原纪录,忽略...