SQL语句【T-SQL汇总】

21 篇文章 0 订阅
10 篇文章 0 订阅
首先,我们开始回顾一下T-SQL的基本语法:
  • 函数
abs(x):求绝对值
例:     select abs( - 3)     值为: 3
sqrt(x)求平方根
例:     select sqrt( 4)     值为: 2.0
rand([0])返回0~1之间的随机float值
floor(X):返回小于或等于X值的最大整数
例:     select floor( 34.5)   值为: 34
ceiling(X):返回大于或等于X值的最小整数;
例:     select ceiling( 34.5)  值为: 35
round(x,length):四舍五入函数,length为正,则对X小数位数四舍五入,length为负,则对X从小数点左边length位起四舍五入,若length既为负数且其绝对值大于X整数部分 数字个数,则函数值为0;

例:     select ROUND( 63.567, 1)      值为: 63.600       select ROUND( 63.567, - 1)     值为: 60.000       select ROUND( 63.567, 0)      值为: 64.000       select ROUND( 63.567, - 3)       值为: 0.000

Sign(X):求符号函数,X>0则sign(x)=1; X=0 则sign(X)=0;X<0 则sign(X)=-1
例:      select sign( - 3)        值为: - 1         select sign( 3)        值为: 1         select sign( 0)         值为: 0
Power(X,y):求X的y次方;
例:     select power( 4, 2)    值为 : 16

  • 字符串函数
ASCII(串):返回字符表达式最左端字符的ASCII 码值;
例:     select ASCII( ' bc ')   值为: 98
CHAR(ASCII码):用于将ASCII 码转换为字符,如果没有输入0 ~ 255 之间的ASCII 码值,返回值为NULL ;
例:     select char( 97)    值为:a
Lower(串):把字符串全部转换为小写;    
例:     select lower( ' QingPingGuo ')     值为: qingpingguo
Upper(串) :把字符串全部转换为大写;
例:     select upper( ' QingPingGuo ')    值为: QINGPINGGUO
LTrim(串), RTrim(串):去掉左右空格;
例(去左空格):   select ' 博客园 ' + LTrim( '    青苹果    ') + ' 博客园 '    值为:博客园青苹果    博客园
space(个数):返回指定个数的空格;

replicate(串,次数):将串重复指定次数;

例:     select replicate( ' 青苹果 ', 2)    值为:青苹果青苹果
Left(串, 个数):返回已知串从左边开始指定个数的字符;
例:     select left( ' 青苹果在博客园 ', 4)    值为:青苹果在
Right(串, 个数):返回已知串从右边开始指定个数的字符;
例:     select right( ' 青苹果在博客园 ', 4)    值为:在博客园
DataLength(串):返回串的字节数长度,计算串尾空格。可以用它检查varchar,text等的动态长度;
例:     select datalength( ' 青苹果在博客园 ')    值为:14
SubString(串, 开始位置, 长度):返回从字符串左边’开始位置’起数量为’长度’的字符串。其中表达式可以是字符串或二进制串或含字段名或字符型变量的表达式。在这里要注意一下SUBSTRING()函数不能用于TEXT 和IMAGE 数据类型;
例:     select substring( ' 青苹果在博客园 ', 5, 2)     值为: 博客
Len(串) :返回表达式的长度。注意它返回的是字符数,而不是字节数。不计算串尾空格;
例:     select    len( ' 青苹果cnblogs    ')      值为:10

Replace('串1','串2','串3'):用串3替换串1中出现的所有串2字符;

例:     select replace( ' 青苹果在北京 ', ' 北京 ', ' 博客园 ')    值为: 青苹果在博客园
Stuff(串1, 开始位置, 长度, 串2):删除串1指定位置开始指定长度的字符串,并在指定位置插入串2;
例:     select stuff( ' 青苹果是程序猿吗? ', 5, 3, ' 攻城狮 ')    值为: 青苹果是攻城狮吗?
reverse(串) :将指定的字符串的字符排列顺序颠倒;
例:     select reverse( ' 12345 ')    值为:54321
charindex(串1,串2):返回串1在串2的开始位置,可从所给出的‘开始位置’进行查找;
例:     select charindex( ' guo ', ' qingpingguo ')    值为:9

  • 转换函数
所谓转换函数就是把某种数据类型转换的表达式显示转换成另一种数据类型的函数。
CAST(表达式 AS 数据类型[(长度)])

例:   select   ' 今天是: ' + Cast( GetDate() as char( 10))  值为: 今天是:07 23 2012
CONVERT(转换后的目标数据类型[(length)],表达式[style])
例:   select   ' 今天是: ' + convert( char( 10), getdate())    值为: 今天是:07 23 2012
下面来看一个求差值的函数datediff函数;
DATEDIFF(datepart,date1,date2)

例:   select   datediff(yy, ' 1988.09.14 ', ' 2012.12.21 ')  值为: 24     select   datediff(mm, ' 1988.09.14 ', ' 2012.12.21 ')  值为: 291
  • 聚合函数

聚合函数也就是统计函数,它主要是对一组值进行计算,它的功能分别是:求和(sum)、求最小(min)、求最大(max)、求总行数(count)、求平均值(avg)

例:   求和: select sum(Name) from TableName       求最小: select min(Name) from TableName       求最大: select max(Name) from TableName      求总数: select count(Name) from TableName      求平均: select avg(Name) from TableName
  • T-SQL的一些关键字

Print 向客户端返回用户信息

例:   print ' 青苹果 '         屏幕上就会显示“青苹果三个字“

Go 用来通知SQL一批语句的结束

Distinct 去掉重复值

Declare 用来声明变量

例:   declare @a int

Set 为变量赋值

例:   set @a = ' 青苹果 '
While 在SQL中用来循环(好像在SQL中用来做循环的关键字不多)

语法:     WHILE < 条件表达式 >                  BEGIN                     <命令行或程序块 >                   [ BREAK ]                   [ CONTINUE ]                   [ 命令行或程序块 ]                  END

While比较重要,我们来做个例子加深一下对While循环的理解:

declare @a int set @a = 1 while @a < 5 begin print ' 青苹果 ' set @a = @a + 1 end

输出结果:青苹果
     青苹果
     青苹果
     青苹果


if else 判断语句

判断语句用的还是比较多的我们还是来做个例子说明一下;

求:a、b、c三个数的最大值?


declare   @a int, @b int, @c int, @max   int set @a = 1 set @b = 2 set @c = 3 if   @a > @b                   set   @max = @a else    set   @max = @b if   @max < @c    set   @max = @c       print    @max

输出结果:3


begin end 用来设定一个程序块,将在BEGIN…END内的所有程序视为一个单元执行。

Exists 判断是否存在

Case 也是用来判断的,和IF语句差不多,它的格式为:

 CASE   <运算式 >        WHEN <运算式1 > THEN   <结果1 >           …             WHEN <运算式n > THEN    <结果n >          [ ELSE  <结果n+1> ]   END
Return    用于结束当前程序的执行,返回到上一个调用它的程序或其它程序。在括号内可指定一个返回值。

Goto标示符 用来改变程序执行的流程,使程序跳到标有标识符的指定的程序行再继续往下执行。要注意的是作为跳转目标的标识符可为数字与字符的组合,但必须以“:”结尾,如:“1023:” “qingpingguo:”


例子:         declare @a int         set @a = 1        qingpignguo:            print @a               set @a = @a + 1         while @a < 6          goto qingpignguo

输出结果:12345

最后一个给大家看个好玩的:

Waitfor 用来暂停程序执行,直到等待指定时间之后,或所设定的时间已到才继续往下运行程序。

语法:   waitfor {delay ' 时间 ' |time ' 时间 '}
解释:
(1)‘时间’必须为DATETIME类型数据,且不能包括日期,如‘10:12:05’
(2)DELAY:用来设定等待的时间长短,最多为24小时。(是一个时间间隔)
(3)TIME:用来设定等待结束的时间点(是一个具体的时间)

例子:    waitfor  delay ' 00:00:03 '    print ' 你好,我是青苹果 '    go
以上就是T-SQL的所有内容了,接下来我们来利用最后的时间画几个图形:
直角三角形:

declare @a int set @a = 1 while( @a < 11 ) begin print replace( space( @a), ' ', ' * ' ) set @a = @a + 1 end

直角三角形 输出结果:

正方形:

declare @a int declare @b int declare @c nvarchar( 100 ) set @a = 1 set @b = 1 set @c = '' while ( @a < 9 ) begin    while ( @b < 15 )    begin      set @c = @c + ' * '    set @b = @b + 1    end    print @c set @a = @a + 1 end


正方形 输出结果:

菱形:

declare @a int, @b int set @a = 1 set @b = 15 if( @b % 2 != 1 ) print ' 数字必须都是奇数 ' else while( @a <= @b ) begin if( @a % 2 = 1 ) print space(( @b - @a) / 2) + replace( space( @a), ' ', ' * ') + space(( @b - @a) / 2 ) set @a = @a + 1 end set @a = @a - 2 while ( @a <= @b ) begin if( @a % 2 = 1 ) print space(( @b - @a) / 2) + replace( space( @a), ' ', ' * ') + space(( @b - @a) / 2 ) set @a = @a - 1    if ( @a < 0 ) break end

菱形 输出结果:

梯形:

declare @a int, @b int set @a = 7 set @b = 21 if( @a % 2 = 1 ) while( @a < @b ) begin print space(( @b - @a) / 2) + replace( space( @a), ' ', ' * ') + space(( @b - @a) / 2 ) set @a = @a + 2 end

梯形 输出结果:

矩形:

declare @a int declare @b int declare @c nvarchar( 100 ) set @a = 1 set @b = 1 set @c = '' while ( @a < 9 ) begin    while ( @b < 23 )    begin      set @c = @c + ' * '    set @b = @b + 1    end    print @c set @a = @a + 1 end

矩形 输出结果:

圆形:

declare @a int, @b int set @a = 9 set @b = 13 while ( @a <= @b ) begin if( @a % 2 = 1 ) print space(( @b - @a) / 2) + replace( space( @a), ' ', ' * ') + space(( @b - @a) / 2 ) set @a = @a + 1 end set @a = @a - 1 begin print space(( @b - @a) / 2) + replace( space( @a), ' ', ' * ') + space(( @b - @a) / 2 ) end while ( @a <= @b ) begin if( @a % 2 = 1 ) print space(( @b - @a) / 2) + replace( space( @a), ' ', ' * ') + space(( @b - @a) / 2 ) set @a = @a - 1 if( @a < 10 ) break end set @a = @a - 2 begin print space(( @b - @a) / 2) + replace( space( @a), ' ', ' * ') + space(( @b - @a) / 2 ) end

圆形输出结果:
The End! 以上就是本文的所有内容,可能写的不够全面,有不足的地方希望大家多多补充,多多发表意见
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值