• 笔记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
  • 相关阅读:
    撩课-Web大前端每天5道面试题-Day6
    撩课-Python-每天5道面试题-第7天
    撩课-Java每天5道面试题第17天
    撩课-Web架构师养成系列(第二篇)-async
    撩课-Web大前端每天5道面试题-Day5
    撩课-Python-每天5道面试题-第6天
    撩课-Java每天5道面试题第16天
    撩课-Web大前端每天5道面试题-Day4
    撩课-Python-每天5道面试题-第5天
    Three.JS鼠标移动元素(转)
  • 原文地址:https://www.cnblogs.com/axyz/p/1984030.html
Copyright © 2020-2023  润新知