SQL Server(第二章) 字符串函数、日期时间函数、转换函数
--1.CONCAT 函数:字符串连接(支持sql server2012 SQL规则 如果与NULL连接返回NILL) SELECT empid,CONCAT(firstname,lastname) AS fullname FROM HR.Employees --sql server2012版本以下用 “+”号即可取代 SELECT empid,firstname + N' ' + lastname AS fullname FROM HR.Employees empid fullname ----------- ------------------------------ 1 Sara Davis 2 Don Funk 3 Judy Lew 4 Yael Peled 5 Sven Buck 6 Paul Suurs 7 Russell King 8 Maria Cameron 9 Zoya Dolgopyatova --2.SUBSTRING 函数:可以从字符串中抽取一个子字符串 SELECT SUBSTRING('ABCDEFG',3,3) ------ CDE --3.LEFT和RIGHT 函数:可以从字符串的左边或右边提取自定长度的子字符串 SELECT LEFT('ABCDEFG',3) ------ ABC SELECT RIGHT('ABCDEFG',3) ------ EFG --4.LEN 函数:返回字符串中的字符数 SELECT LEN(N'ABCDE ') ----------- 5 --5.DATALENGTH 函数:返回字符串中的字节数 SELECT DATALENGTH(N'ABCDE ') ----------- 12 --两者另外一个区别就上LEN删除尾随的空格符,DATALENGTH不会 --6.CHARINDEX 函数:返回子字符串在字符串中第一次出现的位置 SELECT CHARINDEX('w',N'hello world') ----------- 7 --7.PATINDEX 函数:返回子字符串在字符串中第一次出现的位置 SELECT PATINDEX('%[0-9]%',N'abcd1234efgh') ----------- 5 --8.REPLACE 函数:使用另一个字符串替换出现的所有子字符串 SELECT REPLACE('1-a 2-b','-',':') ------------------------------ 1:a 2:b --9.REPLICATE 函数:按照指定的次数,复制指定次数的字符串 SELECT REPLICATE('abcd ',3) --------------- abcd abcd abcd --10.STUFF 函数:从字符串中移除指定数量的字符,并插入一个替代的新子字符串 SELECT STUFF('xyz ',2,1,'abc') ------ xabcz --11.UPPER和LOWER 函数:将一个字符串转换成大写或小写 SELECT UPPER('xyzs ') ---------- XYZS SELECT LOWER('ABCD ') ---------- abcd --12.RTRIM和LTRIM 函数:删除字符串右边空格符,和删除字符串左边空格符 SELECT RTRIM(' ABCD ') ------ ABCD SELECT LTRIM(' ABCD ') ------ ABCD --13.RTRIM和LTRIM 函数:删除字符串右边空格符,和删除字符串左边空格符 SELECT RTRIM(' ABCD ') ------ ABCD SELECT LTRIM(' ABCD ') ------ ABCD --14-1.GETDATE 函数:当前日期和时间 SELECT GETDATE(); ----------------------- 2018-01-04 22:25:14.543 --14-2.CURRENT_TIMESTAMP 函数:等同于GETDATE,但是遵从ANSI SQL SELECT CURRENT_TIMESTAMP; ----------------------- 2018-01-04 22:25:53.510 --14-3.GETUTCDATE 函数:当前UTC日期和时间(通用协调时间) SELECT GETUTCDATE(); ----------------------- 2018-01-04 14:25:53.510 --14-4.SYSDATETIME 函数:当前日期和时间 SELECT SYSDATETIME(); ---------------------- 2018-01-04 22:25:53.51 --14-5.SYSUTCDATETIME 函数:当前UTC日期和时间(通用协调时间) SELECT SYSUTCDATETIME(); ---------------------- 2018-01-04 14:26:56.56 --14-6.SYSDATETIMEOFFSET 函数:包含时区偏移量的当前日期时间 SELECT SYSDATETIMEOFFSET(); ---------------------------------- 2018-01-04 22:26:56.5667693 +08:00 --15.CAST、CONVERT、PARSE 函数:日期时间日期时间转换函数 SELECT CAST('20180104' AS DATETIME); SELECT CONVERT(DATETIME,'20180104'); SELECT PARSE('20180104' AS DATETIME); --SQL SERVER 2008版本不支持 ----------------------- 2018-01-04 00:00:00.000 --SQL SERVER 2012才支持TRY_CAST、TRY_CONVERT、TRY_PARSE --16.SWITCHOFFSET 函数:将DATETIMEOFFSET值调整为指定的时区 SELECT SYSDATETIMEOFFSET(); ---------------------------------- 2018-01-04 22:27:38.5611713 +08:00 SELECT SWITCHOFFSET(SYSDATETIMEOFFSET(),'-03:00'); ---------------------------------- 2018-01-04 11:27:38.5611713 -03:00 SELECT SWITCHOFFSET('20:00:00',10); ---------------------------------- 1900-01-01 20:10:00.0000000 +00:10 SELECT SWITCHOFFSET('20180104',100); ---------------------------------- 2018-01-04 01:40:00.0000000 +01:40 --17.DATEADD 函数:为指定日期时间增加指定输入的年/月/日/时/分/秒等 SELECT DATEADD(YEAR,1,'20180104'); ----------------------- 2019-01-04 00:00:00.000 --18.DATEDIFF 函数:获得两个日期时间值之间的差异,第一个参数可以是年/月/日/时/分/秒等 SELECT DATEDIFF(DAY,'20170101','20170111'); ----------- 10 --19.DATEPART 函数:返回一个表示所请求日期时间部分的整数 SELECT DATEPART(YEAR,'20170101'); ----------- 2017 --20.YEAR、MONTH、DAY 函数:取日期中的 年、月、日 SELECT YEAR('20170101'); ----------- 2017 SELECT MONTH('20170101'); ----------- 1 SELECT DAY('20170101'); ----------- 1 --21.DATENAME 函数:取日期中的 年、月、日字符串(根据会话语言决定) SELECT DATENAME(MONTH,'20170101'); ------------------------------ 01 --21.ISDATE 函数:判断字符串是否能转换成日期格式,可以转换返回1,不可以转换返回0 SELECT ISDATE('20170101'); ----------- 1 SELECT ISDATE('201701011'); ----------- 0
纯属个人笔记,如有问题大家可以一起沟通。