• 笔记1


    + (Add) (Transact-SQL)

    Add:两个数相加。这个加法算术运算符也可以将一个以天为单位的数字加到日期中。

    语法:expression + expression

    参数:expression :数字类别中任何一种数据类型(bit 数据库类型除外)的任何有效表达式。

    结果类型:返回优先级较高的参数的数据类型。

     

    例子1:使用加法运算符计算每个雇员离岗的总小时数。

    select c.FirstName,LastName,e.VacationHours+SickLeaveHours as 'totalhours'
    from HumanResources.Employee as e
    join Person.Contact as c
    on e.ContactID = c.ContactID
    order by 'totalhours' asc

    这个例子,要点在于理解join和on2个关键字。我的理解是当你在2个表内检索数据且2个表有关联字段时,用join关联2个表。

    查了一下w3cschool:

    JOIN: 如果表中有至少一个匹配,则返回行

    • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
    • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
    • FULL JOIN: 只要其中一个表中存在匹配,就返回行
    • 仔细想想他们的差异。

    例子2:使用使用加法运算符将数天添加到日期和时间值中

    declare @startdate datetime,@adddays int
    set @startdate = '1/10/1900 12:00 AM'
    set @adddays = 5
    select @startdate + 1.25 as 'start date',
        @startdate + @adddays as 'add date'

    这个例子主要讲在datetime类型的变量后使用加法运算符的作用。注意,1.25和@adddays 的单位都是天。

     

    例子3:字符串和整数数据类型相加

    declare @addvalue int
    set @addvalue = 5
    select '111222' + @addvalue

    这个例子主要讲在字符串和整数相加的过程中,字符数据类型会转换为int,如果char中有无效字符,会报错。

     

     

    +(一元加号)(Transact-SQL)

    语法:+ numeric_expression

    参数:numeric_expression:numeric 数据类型类别中任何数据类型(datetimesmalldatetime 数据类型除外)的任何有效表达式。

    结果类型:除了无符号的 tinyint 表达式被提升为 smallint 结果之外,返回 numeric_expression 的数据类型。

    备注:尽管一元加号可以出现在任何数值表达式之前,但它对表达式返回的值不执行操作。很明显,负表达式不会返回正值。若要返回负表达式的正值,请使用 ABS 函数。

     

    例子1:将变量设置为正值

    DECLARE @MyNumber decimal(10,2);
    SET @MyNumber = +123.45;
    SELECT @MyNumber;
    GO
    image 
    这个例子主要学习到了decimal数据类型,上面讲的很详细了。
     
    例子2:如何将一元加号用于负表达式和将 ABS() 函数用于同一负表达式上。一元加号不影响该表达式,但 ABS 函数将返回该表达式的正值。
    DECLARE @Num1 int; 
    SET @Num1 = -5; 
    SELECT +@Num1, ABS(@Num1);

     

    +(字符串串联)(Transact-SQL)

    语法:expression + expression

    参数:

    字符和二进制数据类型类别中的任何一个数据类型的有效表达式,但 imagentexttext 数据类型除外。两个表达式必须具有相同的数据类型,或者其中一个表达式必须能够隐式转换为另一个表达式的数据类型。

    在二进制字符串之间串联二进制字符串和任何字符串时,必须显式转换字符数据。

    例子如下:

    DECLARE @mybin1 binary(5), @mybin2 binary(5)
    SET @mybin1 = 0xFF
    SET @mybin2 = 0xA5
    -- No CONVERT or CAST function is required because this example 
    -- concatenates two binary strings.
    --连接2个二进制字符串,所以不需要convert
    SELECT @mybin1 + @mybin2
    -- A CONVERT or CAST function is required because this example
    -- concatenates two binary strings plus a space.
    --连接2个二进制字符串和一个空格,所以需要用convert或者cast
    SELECT CONVERT(varchar(5), @mybin1) + ' ' 
       + CONVERT(varchar(5), @mybin2)
    -- Here is the same conversion using CAST.
    SELECT CAST(@mybin1 AS varchar(5)) + ' ' 
       + CAST(@mybin2 AS varchar(5))

    结果:返回优先级最高的参数的数据类型。

     

    例子1:使用 CONVERT 函数串联 numericdate 数据类型。

    SELECT 'The order is due on ' + CONVERT(varchar(12), DueDate, 101)

    FROM Sales.SalesOrderHeader

    WHERE SalesOrderID = 50001;

    这个关键不明白的在于CONVERT这个函数的应用。w3c解释如下:

    CONVERT() 函数是把日期转换为新数据类型的通用函数。

    CONVERT() 函数可以用不同的格式显示日期/时间数据。

    语法:CONVERT(data_type(length),data_to_be_converted,style)

    data_type(length) 规定目标数据类型(带有可选的长度)。

    data_to_be_converted 含有需要转换的值。style规定日期/时间的输出格式。

    如:style  = 101,则style格式为mm/dd/yy

     

    例子3:串联多个字符串,形成一个长字符串,显示 Adventure Works Cycles 的副总裁的姓氏和名字的首字母。逗号加在姓氏后,句点加在名字首字母后。

    SELECT (LastName + ',' + SPACE(1) + SUBSTRING(FirstName, 1, 1) + '.') AS Name, e.Title

    FROM Person.Contact AS c JOIN HumanResources.Employee AS e ON c.ContactID = e.ContactID

    WHERE e.Title LIKE 'Vice%'

    ORDER BY LastName ASC;

    语法没什么难度,使用了substring截取字符串首字母。

     

    -(负)(Transact-SQL)

    -(减)(Transact-SQL)

    基本等同对应的+运算符,不做笔记

     

    &(位与)(Transact-SQL)

    语法:expression & expression

    参数: 整数数据类型分类中的任何数据类型或者 bitbinaryvarbinary 数据类型的任何有效表达式。expression 被视为位运算的二进制数字。(在位运算中,只有一个 expression 可以是 binaryvarbinary 数据类型。)

    结果类型:如果输入值为 int,则为 int。如果输入值为 smallint,则为 smallinttinyint 如果输入值是 tinyintbit

    备注:& 位运算符将在两个表达式之间执行位与逻辑运算,从两个表达式取对应的位。当且仅当输入表达式中两个位(正在被解析的当前位)的值都为 1 时,结果中的位才被设置为 1;否则,结果中的位被设置为 0。

    如果左侧和右侧的表达式具有不同的整数数据类型(例如,左侧的 expression 的数据类型为 smallint,右侧的 expression 的数据类型为 int),则会将较小数据类型的参数转换为较大数据类型。

     

    例子1:

    USE tempdb;
    GO
    IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES 
          WHERE TABLE_NAME = 'bitwise')
       DROP TABLE bitwise;
    GO
    CREATE TABLE bitwise
    ( 
    a_int_value int NOT NULL,
    b_int_value int NOT NULL
    );
    GO
    INSERT bitwise VALUES (170, 75);
    GO

    检查是否有bitwise这个表,没有的话,添加一个。包含a_int_value和b_int_value2个字段。

    USE tempdb;
    GO
    SELECT a_int_value & b_int_value
    FROM bitwise;
    GO

    执行位运算。将int值转化为2进制后,进行位运算。

    170(a_int_valueA)的二进制表示形式是 0000 0000 1010 1010。75(b_int_valueB)的二进制表示形式是 0000 0000 0100 1011。对上述两个值执行“位与”运算将产生二进制结果 0000 0000 0000 1010,即十进制数 10。

    (A & B)
    0000 0000 1010 1010
    0000 0000 0100 1011
    -------------------
    0000 0000 0000 1010
  • 相关阅读:
    严重: Parse error in application web.xml file at jndi:/localhost/ipws/WEBINF/web.xml java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml
    Failed to install .apk on device 'emulator5554': timeout解决方法
    java.lang.NoClassDefFoundError:org.jsoup.Jsoup
    Conversion to Dalvik format failed: Unable to execute dex:解决方法
    apache Digest: generating secret for digest authentication ...
    Description Resource Path Location Type Project has no default.properties file! Edit the project properties to set one.
    android service随机自启动
    MVC3 安装部署
    EF 4.3 CodeBased 数据迁移演练
    SQL Server 2008开启sa账户
  • 原文地址:https://www.cnblogs.com/axyz/p/1984030.html
Copyright © 2020-2023  润新知