T-SQL 语言基础:逻辑表达式和字符数据处理

目录

  1. 引言
  2. SQL Server 中的逻辑表达式
    • 谓词:IN、BETWEEN、LIKE
    • 运算符:=, >, <, >=, <=, <>
    • 逻辑操作符:AND、OR、NOT
  3. 使用 CASE 表达式
    • 简单 CASE 表达式
    • 搜索 CASE 表达式
  4. 处理 NULL 值
  5. 同时操作的概念
  6. 处理字符数据
    • 字符数据类型
    • 排序规则(Collation)
    • 引号分隔和 QUOTED_IDENTIFIER 选项
  7. 结论

1. 引言

在 SQL Server 中,逻辑表达式和字符数据处理是数据库查询和操作的核心部分。理解这些概念有助于编写更高效、更准确的 SQL 查询。本文将详细介绍 SQL Server 中的逻辑表达式、CASE 表达式的使用、NULL 值的处理、同时操作的概念以及字符数据的处理方法。


2. SQL Server 中的逻辑表达式

谓词:IN、BETWEEN、LIKE
  • IN:检查一个值是否与一组元素中的至少一个相等。

    SELECT 
        orderid,
        empid,
        orderdate
    FROM Sales.Orders
    WHERE orderid IN (10248, 10249, 10250);
    
  • BETWEEN:检查一个值是否在指定范围内,包括两个边界值。

    SELECT 
        orderid,
        empid,
        orderdate
    FROM Sales.Orders
    WHERE orderid BETWEEN 10300 AND 10310;
    
  • LIKE:用于检查一个字符串是否与指定的模式匹配。

    SELECT empid, firstname, lastname
    FROM HR.Employees
    WHERE lastname LIKE N'D%';
    
运算符:=, >, <, >=, <=, <>, !=, !>, !<
  • 示例:

    SELECT
        orderid, empid, orderdate
    FROM Sales.Orders
    WHERE orderdate >= '20080101';
    
逻辑操作符:AND、OR、NOT
  • 示例:

    SELECT orderid, empid, orderdate
    FROM Sales.Orders
    WHERE orderdate >= '20080101'
        AND empid IN (1, 3, 5);
    

3. 使用 CASE 表达式

简单 CASE 表达式

简单 CASE 表达式只有一个测试值(或表达式),紧跟在 CASE 关键字之后。

  • 示例:

    SELECT
        orderid, custid, val,
        CASE NTILE(3) OVER(ORDER BY val)
            WHEN 1 THEN 'Low'
            WHEN 2 THEN 'Medium'
            WHEN 3 THEN 'High'
        ELSE 'UNKNOWN'
        END AS titleDesc
    FROM Sales.OrderValues;
    
搜索 CASE 表达式

搜索 CASE 表达式更灵活,可以在 WHEN 子句中指定谓词或逻辑表达式。

  • 示例:

    SELECT orderid, custid, val,
        CASE
            WHEN val < 1000.0 THEN 'Less than 1000'
            WHEN val BETWEEN 1000.0 AND 3000.0 THEN 'BETWEEN 1000 AND 3000'
            WHEN val > 3000.0 THEN 'MORE THAN 3000'
            ELSE 'UNKNOWN'
        END AS VALUECategory
    FROM Sales.OrderValues;
    

4. 处理 NULL 值

在 SQL Server 中,NULL 表示未知的或没有值的状态。需要注意的是,NULL 与任何值的比较结果都是未知(UNKNOWN)。


5. 同时操作的概念

SQL 支持同时操作的概念,即同一逻辑查询处理阶段中出现的所有表达式都是同时进行计算的。

  • 示例:

    SELECT
        orderid,
        YEAR(orderdate) AS orderyear,
        orderyear + 1 AS NEXTYEAR
    FROM Sales.Orders;
    

在这个例子中,orderyear 列的别名在同一 SELECT 列表中不能直接引用,因为所有表达式是同时计算的。


6. 处理字符数据

字符数据类型

SQL Server 支持两种字符数据类型:普通字符和 Unicode 字符。

  • 普通字符:CHAR 和 VARCHAR
  • Unicode 字符:NCHAR 和 NVARCHAR
排序规则(Collation)

排序规则用于确定字符数据的排序和比较行为。可以使用 COLLATE 子句修改表达式的排序规则。

  • 查询系统中目前支持的所有排序规则及其描述:

    SELECT name, description
    FROM sys.fn_helpcollations();
    
  • 示例:

    SELECT empid, firstname, lastname
    FROM HR.Employees
    WHERE lastname = N'davis';
    
    SELECT empid, firstname, lastname
    FROM HR.Employees
    WHERE lastname COLLATE Latin1_General_CS_AS = N'davis';
    
引号分隔和 QUOTED_IDENTIFIER 选项
  • 单引号用于分隔文字字符串标识符。
  • 双引号用于分隔不规则的标识符(如表名或列名包含空格或以数字开头)。

QUOTED_IDENTIFIER 设置选项用于控制双引号的含义,默认是 ON。


7. 结论

本文详细介绍了 SQL Server 中的逻辑表达式、CASE 表达式的使用、NULL 值的处理、同时操作的概念以及字符数据的处理方法。掌握这些概念和技巧将帮助您编写更高效、更准确的 SQL 查询。


参考资料

链接: 

TSQLFundamentals2008

**喜欢的话,请收藏 | 关注(✪ω✪)**
……**万一有趣的事还在后头呢,Fight!!(o^-^)~''☆ミ☆ミ**……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值