好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

SQL语句(T-SQL汇总) 用T-SQL画出这些图形

我个人感觉 数据库 这方面对于程序员来说很重要,无论是对于 Java 程序员还是DOTNET程序员以及其他 编程 人员来说都是必须掌握的。为了帮助大家更好的来回顾T-SQL,本人利用空闲的时间整理的一下T-SQL的语句和语法。希望对大家有用!

好的!我们先来看几个图像:

棱形 三角形 正方形 圆形 矩 形 梯形

上面这些图形都是用T-SQL实现的,文章的最后我们一起来用T-SQL画出这些图形。

首先,我们开始回顾一下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(串, 开始位置, 长度 android ) :返回从字符串左边'开始位置'起数量为'长度'的字符串。其中表达式可以是字符串或二进制串或含字段名或字符型变量的表达式。在这里要注意一下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     用http://www.cppcns.com来声明变量

例:   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    用于结束当前程序的执行,返回到上一个调用它的程序或其它程 js 序。在括号内可指定一个返回值。

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   s  js  et   @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! 以上就是本文的所有内容,可能写的不够全面,有不足的地方希望大家多多补充,多多发表意见!谢谢!
作者:青苹果

查看更多关于SQL语句(T-SQL汇总) 用T-SQL画出这些图形的详细内容...

  阅读:47次