zoukankan      html  css  js  c++  java
  • MSSQL扫盲系列(5)常量,变量,运算符,流程控制

    常量

    View Code
    --MSSQL支持多种常量类型,常量可以直接使用
    SELECT 'ABCDabc012!@#$',--字符串常量,''两个单引号
    N'物华天宝,龙光射牛斗之墟;人杰地灵,徐孺下陈蕃之榻',--UNICODE常量
    0,--或1,BIT型常量,为特殊的INT常量
    0x0001111,--二进制常量
    12212,--INT常量
    '2012-12-22',--日期常量
    12.222,--DECIMAL常量
    101.2e5,--REAL或FLOAT常量
    $12.23,¥189.52,€45.1,--MONEY常量
    '{9EF2B9F4-4311-4e3a-BE3A-7FA8800BA4D0}'--UNIQUEIDENETIFIER常量GUID

    变量

    View Code
    --变量,使用DECLARE 定义
    --
    一个@表示本地变量,两个@表示全局变量
    --
    对全局变量,要谨慎使用,因为它是在服务器级定义的,不是在用户程序域
    DECLARE @I INT,--定义一个本地的INT型变量
    @S NVARCHAR(100),--定义一个长度为100的本地NVARCHAR变量,
    --和CHAR,VARCHAR,NCAHR都是能指定列宽
    @D DATETIME,--本地
    @M MONEY,--货币值常量
    @DE DECIMAL(12),--能指定列宽
    @R REAL,--实数
    @B BINARY(128),--能指定列宽
    @U UNIQUEIDENTIFIER--GUID
    --
    表变量
    DECLARE @T TABLE (ROWID INT,NAME NVARCHAR(100))
    --定义一个包含两个字段的本地表变量
    --
    临时表和表变量的选择,一般是
    --
    行数较少的情况下(小于1000行)可以使用表变量
    --
    行数很多(有几万行),则使用临时表

    --常用的全局变量
    SELECT @@IDENTITY, --最后一次插入的标识值,这个用的很多
    @@ROWCOUNT,--受上一个SQL语句影响的行数
    @@ERROR,--最后一个T-SQL错误的错误号,异常中会使用
    @@TRANCOUNT,--当前连接打开地事务数
    @@MAX_CONNECTIONS,--可以创建最大连接的数目
    @@SERVERNAME,--本地服务器地名称
    @@SERVICENAME--服务器上服务的名称

    运算符

    View Code
    --赋值运算符=
    DECLARE @N INT
    SET @N=@@ERROR
    --
    SELECT @N=@@ERROR

    --位运算符
    SELECT 2&4,--按位或 0010&0100=0000
    2|4,--按位与 0010|0100=0110
    2^4--按位互斥 0010^0100=0110

    ---比较运算符,逻辑运算符,各个优先级如下
    --
    =,>,<,>=,<=,<>,!=,!>,!<
    --
    NOT,AND,OR
    IF NOT 1=1 AND 2>1 OR 3<4 OR
    5>=5 OR 6<=7 OR 4<>4 OR
    7!=4 OR 4!>2 OR 4!<2
    PRINT 'Hello T-Sql world'

    --放个重要的东西,SQL2005运算符优先级
    /*

    (1)括号:();
    (2)乘、除、求模运算符:*,/,%;
    (3)加减运算符:+,-;
    (4)比较运算符:=,>,<,>=,<=,<>,!=,!>,!<;
    (5)位运算符:^,&,|;
    (6)逻辑运算符:NOT;
    (7)逻辑运算符:AND;
    (8)逻辑运算符:OR。
    */

     流程控制

    IF..ELSE(求最大数)

    View Code
    --求两个INT变量中较大的那个
    DECLARE @A INT ,@B INT
    SET @A=45
    SET @B=56
    DECLARE @T INT
    IF @A>@B
    SET @T=@A
    ELSE
    SET @T=@B
    SELECT @T

    CASE(显示简称和性别)

    View Code
    --姓名简称和性别
    CREATE TABLE # (NAME NVARCHAR(4) NOT NULL,
    GENDER BIT NOT NULL,
    SALARY MONEY NOT NULL,
    [MONTH] DATETIME NOT NULL)
    INSERT # VALUES('韩菱纱',0,¥3500,'2012-1-1')
    INSERT # VALUES('韩菱纱',0,¥3000,'2012-2-1')
    INSERT # VALUES('韩菱纱',0,¥4500,'2012-3-1')
    INSERT # VALUES('云天河',1,¥2500,'2012-1-1')
    INSERT # VALUES('云天河',1,¥2000,'2012-2-1')
    INSERT # VALUES('云天河',1,¥2100,'2012-3-1')
    INSERT # VALUES('柳梦璃',0,¥3200,'2012-1-1')
    INSERT # VALUES('柳梦璃',0,¥3100,'2012-2-1')
    INSERT # VALUES('柳梦璃',0,¥3800,'2012-3-1')
    INSERT # VALUES('慕容紫英',1,¥3000,'2012-1-1')
    INSERT # VALUES('慕容紫英',1,¥2900,'2012-2-1')
    INSERT # VALUES('慕容紫英',1,¥2700,'2012-3-1')

    SELECT CASE
    WHEN NAME='韩菱纱' THEN '纱纱'
    WHEN NAME='云天河' THEN '天河'
    WHEN NAME='柳梦璃' THEN '梦璃'
    WHEN NAME='慕容紫英' THEN '小紫英'
    ELSE '' END SHORTNAME,
    CASE
    WHEN GENDER=0 THEN ''
    WHEN GENDER=1 THEN ''
    ELSE '' END GENDER,
    SALARY,MONTH([MONTH]) [MONTH] FROM #
    DROP TABLE #

    WHILE(SQL版的斐波那契数)

    View Code
    --求斐波那契数
    DECLARE @N INT, --要求是第几个数
    @CN INT,--当前第几个数
    @L INT,--前一个数
    @P INT,--前第二个数
    @C INT--当前数

    SET @N=10--求第十个数
    SET @CN=3--从第三位开始算,1和2都是1
    SET @L=1--第一个数是1
    SET @P=1--第二个数是1
    SET @C=1

    IF @N=1 OR @N=2
    SET @C=1
    ELSE
    WHILE 1=1--这里最简单的写法是@CN<@N
    --为了让后面的CONTINUE和BREAK起作用
    BEGIN
    SET @C=@L+@P--当前数为前两个数的和
    SET @P=@L--将前一位赋给前第二个数
    SET @L=@C--将当前数赋给前一位
    SET @CN=@CN+1
    IF @CN<=@N
    CONTINUE
    ELSE
    BREAK
    END
    SELECT @C
  • 相关阅读:
    Android报表库aChartEngine系列(pie chart)
    二分查找算法java实现
    Android报表库aChartEngine系列(介绍)
    如何自定义view
    服务器性能瓶颈分析方法
    浅析C#中new、override、virtual关键字的区别
    Team Foundation Server 实例安装过程
    asp.net2.0站点应用程序池错误的问题
    C#字符串去除html标记
    web.config加密的问题
  • 原文地址:https://www.cnblogs.com/wushilonng/p/2388522.html
Copyright © 2011-2022 走看看