SQL基础巩固2
日期函数
| 函数名称 | 含义 | 示例 |
| GetDate | 返回当前系统日期和时间,返回值类型为datetime | select GETDATE()//输出当前日期 |
| YEAR | 返回指定日期的年份 | YEAR('08/20/2008')//结果为2008 |
| MONTH | 返回指定日期的月份 | MONTH('08、20、2008') //结果为8 |
| DAY | 返回指定日期的天数 | DAY('08/20/2008')// 结果为20 |
| GETUTCDATE | 返回当前系统的UTC时间 | Select GETUTCDATE() |
| DateAdd | 在向指定日期加上一段时间的基础上,返回新的datetime值,函数原型为DateAdd(detepart,number,date) |
select DateADD(DAY,3,GETDate()) 将当前日期+3天输出, select DateADD(MONTH,3,GETDate()) 将当前日期+3个月输出, |
| DateDIFF | 返回跨两个指定日期的日期和时间边界数。函数原型为DATEDIFF(datepart,startdate,endate) | select DateDiff(Hour,GETUTCDate(),GetDate()),//结果为8 |
| DatePart | 返回代码指定日期的指定日期部分的字符串。函数原型为DATENAME(datepart,date) | select DATENAME(DAY,GETDATE()) //输出当前日期的天数部分 |
数学函数
| RAND | 返回一个0到1之间的float的随机数 |
| ABS | 返回指定数的绝对值 |
| SIGN | 返回个给定表达式的正(+),零(0)或负(-1)号 |
| EXP | 返回给定float表达式的指数值 |
| LOG | 返回给定float表达式的自然对数 |
| SQUARE | 返回给定表达式的平方 |
| SQRT | 返回给定表达式的平方根 |
| POWER | 返回给定表达式乘指定次方的值,函数原型为POWER |
| SIN | 返回给定角度的三角正弦值 |
| ASIN | 返回以弧度标示的角度值,该角度的正弦为给定表达式 |
| COS | 返回给定角度的三角余弦值 |
| ACOS | 返回以弧度表示的角度值,该角度的余弦为给定的表达式 |
| TAN | 返回输入表达式的正切值 |
| ATAN | 返回以弧度表示的角度值,该角度的正切为给定的表达式 |
字符串函数
| SPACE | 返回由重复的空格组成的字符串 | select SPACE(5) //输出5个空格 |
| CHAR | 将整数转化为ASCII对应的字符串 | select CHAR(13) |
| LEN | 返回给定字符串表达式的字符个数 | |
| LEFT | 返回从字符串左边开始指定个数的字符 | |
| RIGHT | 返回从字符串右边开始指定个数的字符 | |
| SUBSTRING | 返回字符串中指定的一部分 | select SUBSTRING('ABCDEFG',2,5) //输出‘BCDEF’ |
| LOWER | 将大写字符数据转换为小写字符 | select LOWER('ABCD') |
| UPPER | 将小写字符转换为大写字符 | |
| LTRIM | 删除字符串左面的空格 | |
| RTRIM | 删除字符串右边的空格 | |
| REPLACE | 用第三个表达式替换第一个字符串表达式出现的所有迭戈给定字符串表达式 | SELECT REPALCE('abcdef','bcde','xxxx') |
| REVERSE | 返回字符表达式的反转 | select Reverse('ABCD') 输出‘DCBA’ |
T-SQL2008新增功能
1.Insert 支持一次插入多条数据
Insert 学生表 values (1,2,2), (2,2,2)
2.Merge
能够根据一个源数据表对另一个表进行确定性的插入,更新和删除这样的复杂操作,运用新的MERGE语句,开发者一条命令就可以完成
Merge [target] t //将source表中的数据同步到target中 using [source] s on t.id=s.id when matched then update t.name=s.name,t.age=s.age when not matched then values(id,name,age) when source not matched then delete //如果target表中有多余的而source表中没有的记录就删除
表值函数
--------------------------这个函数用来切割字符串的-----------------
--函数的参数 第一个是要切割的字符串 第二个是要以什么字符串切割
CREATE FUNCTION Split(@Text NVARCHAR(4000),@Sign NVARCHAR(4000))
RETURNS @tempTable TABLE(id INT IDENTITY(1,1) PRIMARY KEY,[VALUE] NVARCHAR(4000))
AS
BEGIN
DECLARE @StartIndex INT --开始查找的位置
DECLARE @FindIndex INT --找到的位置
DECLARE @Content VARCHAR(4000) --找到的值
--初始化一些变量
SET @StartIndex = 1 --T-SQL中字符串的查找位置是从1开始的
SET @FindIndex=0
--开始循环查找字符串逗号
WHILE(@StartIndex <= LEN(@Text))
BEGIN
--查找字符串函数 CHARINDEX 第一个参数是要找的字符串
-- 第二个参数是在哪里查找这个字符串
-- 第三个参数是开始查找的位置
--返回值是找到字符串的位置
SELECT @FindIndex = CHARINDEX(@Sign,@Text,@StartIndex)
--判断有没找到 没找到返回0
IF(@FindIndex =0 OR @FindIndex IS NULL)
BEGIN
--如果没有找到者表示找完了
SET @FindIndex = LEN(@Text)+1
END
--截取字符串函数 SUBSTRING 第一个参数是要截取的字符串
-- 第二个参数是开始的位置
-- 第三个参数是截取的长度
--@FindIndex-@StartIndex 表示找的的位置-开始找的位置=要截取的长度
--LTRIM 和 RTRIM 是去除字符串左边和右边的空格函数
SET @Content = LTRIM(RTRIM(SUBSTRING(@Text,@StartIndex,@FindIndex-@StartIndex)))
--初始化下次查找的位置
SET @StartIndex = @FindIndex+1
--把找的的值插入到要返回的Table类型中
INSERT INTO @tempTable ([VALUE]) VALUES (@Content)
END
RETURN
END
附加:
/*
自定义函数分为:标量值函数或表值函数
- 如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数。可以使用多条 Transact-SQL 语句定义标量值函数。
- 如果 RETURNS 子句指定 TABLE,则函数为表值函数。
表值函数又可分为:内嵌表值函数(行内函数)或多语句函数
- 如果 RETURNS 子句指定的 TABLE 不附带列的列表,则该函数为内嵌表值函数。
- 如果 RETURNS 子句指定的 TABLE 类型带有列及其数据类型,则该函数是多语句表值函数。
*/
SQL基础巩固2的更多相关文章
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- 黑马程序员+SQL基础(上)
黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...
- Oracle SQL 基础学习
oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ...
- 第一章 SQL基础
第一部分:SQL基础1. 为什么学习SQL自人类社会形成之日起,社会的运转就在不断地产生和使用各种信息(文献.档案.资料.数据等):在如今所谓的信息时代,由于计算机和互联网的作用,信息的产生和使用达到 ...
- SQL基础--> 约束(CONSTRAINT)
--============================= --SQL基础--> 约束(CONSTRAINT) --============================= 一.几类数据完 ...
- SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)[转]
--====================================================== --SQL基础-->层次化查询(START BY ... CONNECT BY ...
随机推荐
- ural 1255. Graveyard of the Cosa Nostra
1255. Graveyard of the Cosa Nostra Time limit: 1.0 secondMemory limit: 64 MB There is a custom among ...
- Recurrent Neural Network(循环神经网络)
Reference: Alex Graves的[Supervised Sequence Labelling with RecurrentNeural Networks] Alex是RNN最著名变种 ...
- ACM 字符串替换
字符串替换 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 编写一个程序实现将字符串中的所有"you"替换成"we" 输入 ...
- [深入浅出WP8.1(Runtime)]网络编程之HttpClient类
12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...
- 【wikioi】1014 装箱问题
题目链接 算法:动态规划(01背包) 01背包思想:依次对待某一物体,考虑是否放入容量为V的背包中 用f[V]来表示容量为V的背包的最大价值,则决策是 f[V] = max{f[V], f[V-v[i ...
- SRM 615 DIV1 500
TC 都615了...时间过的真快啊. 第一次做出500分,心情还是很激动的,虽然看了很久的题解,TC官网上的题解,很详细,但是英语的...我搜了搜,发现一份日语的...好吧,我还是看看英语的吧... ...
- SolrCloud-如何在.NET程序中使用
https://github.com/vladen/SolrNet 原来我们在我们的项目里用的是根据数据库路由到不同的单机Solr服务器,但是这样的话,每次Solr配置的修改都要修改三台不通的服务器, ...
- Resharp最新破解方法
ReSharper是一个JetBrains公司出品的著名的代码生成工具,其能帮助Microsoft Visual Studio成为一个更佳的IDE.它包括一系列丰富的能大大增加C#和Visual Ba ...
- [转]as3事件流机制彻底理解
题记: 看过网上一些as3事件流的教程,觉得大多都讲得不甚清楚,让人不能直观的理解事件流.而这篇教程以将事件流过程比喻成捕鱼过程,形象简单. 在此基础上对于as3事件流总算有了全面的理解.事件流机制说 ...
- c#面向对象基础 静态成员、构造函数、命名空间与类库
静态成员 属性.方法和字段等成员是对象实例所特有的,即改变一个对象实例的这些成员不影响其他的实例中的这些成员.除此之外,还有一种静态成员(也称为共享成员),例如静态方法.静态属性或静态字段.静态成员可 ...