• 数据库打印图形


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

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

    上面这些图形都是用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(串, 开始位置, 长度):返回从字符串左边’开始位置’起数量为’长度’的字符串。其中表达式可以是字符串或二进制串或含字段名或字符型变量的表达式。在这里要注意一下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

    Whil比较重要,我们来做个例子加深一下对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

    圆形输出结果:

    更多详情请关注 http://www.cnblogs.com/baixingqiang/
  • 相关阅读:
    Qt之重启应用程序
    Qt之密码框不可选中、复制、粘贴、无右键菜单等
    Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
    HTTP全部报文首部字段
    工厂模式
    《Qt 实战一二三》
    Qt之国际化
    Java如何读取XML文件 具体实现
    href脱离iframe显示
    iframe并排横着显示
  • 原文地址:https://www.cnblogs.com/baixingqiang/p/5254376.html
Copyright © 2020-2023  润新知