当前位置: 首页 > news >正文

SQLserver中的in和like以及between and

sqlserver中的in

在 SQL Server 中,IN 是一个子句,用于在 WHERE 子句中测试某个列的值是否包含在指定的值列表中。IN 子句可以包含多个值,并且可以与子查询一起使用。

以下是 IN 子句的一些用法示例:

  1. 基本用法:使用 IN 来检查列中的值是否与列表中的任何值匹配。

    SELECT column1, column2
    FROM table_name
    WHERE column1 IN (value1, value2, value3);

  2. 与子查询结合IN 子句可以包含一个子查询,返回一个值列表。

    SELECT column1, column2
    FROM table_name
    WHERE column1 IN (SELECT subquery_column FROM subquery_table WHERE subquery_condition);

  3. 使用变量:在某些情况下,可以使用变量来动态地构建 IN 子句中的值列表。

    DECLARE @valueList NVARCHAR(MAX);
    SET @valueList = 'value1,value2,value3';
    ​
    SELECT column1, column2
    FROM table_name
    WHERE column1 IN (SELECT value FROM STRING_SPLIT(@valueList, ','));

  4. 使用表值参数:如果值列表存储在一个表中,可以使用表值参数。

    DECLARE @valueTable TABLE (value INT);
    INSERT INTO @valueTable VALUES (1), (2), (3);
    ​
    SELECT column1, column2
    FROM table_name
    WHERE column1 IN (SELECT value FROM @valueTable);

  5. 空列表优化:如果 IN 子句中的列表为空,SQL Server 会自动优化查询,返回空结果集,而不会抛出错误。

    SELECT column1, column2
    FROM table_name
    WHERE column1 IN (); -- 这将返回空结果集

  6. NOT IN:使用 NOT IN 来选择不在列表中的值。

    SELECT column1, column2
    FROM table_name
    WHERE column1 NOT IN (value1, value2, value3);

使用 IN 子句时,需要注意以下几点:

  • IN 子句中的列表可以包含最多 4000 个元素。

  • 对于大型列表,考虑使用临时表或表变量来代替直接在 IN 子句中列出值。

  • 当使用 IN 子句与子查询时,子查询必须返回一个单一列的结果集。

  • 在某些情况下,使用 IN 子句可能影响查询性能,特别是当列表很大或子查询很复杂时。在这些情况下,考虑使用其他方法,如 JOIN 或临时表。

sqlserver中的like

在 SQL Server 中,LIKE 是一个用于在 WHERE 子句中执行模式匹配的运算符。它允许你搜索列中的值,这些值与指定的搜索模式匹配。LIKE 通常与通配符一起使用,以定义搜索模式。

以下是 LIKE 运算符的一些常见用法:

  1. 基本用法:使用 LIKE 来查找包含特定文本的值。

    SELECT column_name
    FROM table_name
    WHERE column_name LIKE 'text%';

  2. 使用通配符

    • %(百分号):代表任意数量的字符。

    • _(下划线):代表任意单个字符。

    查找以特定文本开头的值:

    以text开头的

    SELECT column_name
    FROM table_name
    WHERE column_name LIKE 'text%';

    查找包含特定文本的值:

    文本包含text的

    SELECT column_name
    FROM table_name
    WHERE column_name LIKE '%text%';

    查找以特定文本结尾的值:

    以text结尾

    SELECT column_name
    FROM table_name
    WHERE column_name LIKE '%text';

    查找包含特定子字符串的值:

    SELECT column_name
    FROM table_name
    WHERE column_name LIKE '%text%';

  3. 使用转义字符:如果搜索模式中包含通配符字符(%_),但你想将它们视为普通字符,可以使用转义字符(默认是 [ ][])来转义它们。

    SELECT column_name
    FROM table_name
    WHERE column_name LIKE '%[text]%' ESCAPE '[';

  4. 组合使用 LIKE 和 NOT LIKE:使用 NOT LIKE 来选择不匹配搜索模式的值。

    SELECT column_name
    FROM table_name
    WHERE column_name NOT LIKE 'text%';

  5. 使用变量:可以结合变量使用 LIKE 进行动态查询。

    DECLARE @searchPattern NVARCHAR(100) = 'text%';
    SELECT column_name
    FROM table_name
    WHERE column_name LIKE @searchPattern;

使用 LIKE 时,需要注意以下几点:

  • LIKE 是大小写敏感的,除非数据库设置了不区分大小写的排序规则。

  • LIKE 可以与全文搜索一起使用,以提高搜索性能和功能。

  • 在性能敏感的环境中,考虑使用索引列上的 LIKE 搜索,但要注意,对于以 % 开头的模式,索引不会被使用。

  • 过度使用 LIKE 可能会导致查询性能问题,特别是当涉及到大量数据时。在这些情况下,考虑使用其他搜索技术或数据结构。

SQLserver中的between and

在 SQL Server 中,BETWEEN AND 是一个用于在 WHERE 子句中指定范围的条件表达式。它可以用来查找介于两个值之间的数据,这两个值是包含的,即包括这两个边界值本身。

以下是 BETWEEN AND 的一些基本用法:

  1. 数值范围:查找介于两个数值之间的数据。

    SELECT column_name
    FROM table_name
    WHERE column_name BETWEEN value1 AND value2;

  2. 日期范围:查找介于两个日期之间的数据。

    SELECT column_name
    FROM table_name
    WHERE column_name BETWEEN 'start_date' AND 'end_date';

  3. 字符串范围(不常用,因为字符串是按照字典顺序比较的):查找介于两个字符串值之间的数据。

    SELECT column_name
    FROM table_name
    WHERE column_name BETWEEN 'value1' AND 'value2';

  4. 包含空值BETWEEN AND 表达式自动包含查询范围内的所有值,包括边界值。但是,它不会匹配 NULL 值,因为 NULL 不是一个有效的范围值。

  5. 使用变量:使用变量来动态指定范围的开始和结束值。

    DECLARE @start_value INT = 10, @end_value INT = 20;
    SELECT column_name
    FROM table_name
    WHERE column_name BETWEEN @start_value AND @end_value;

  6. 排除边界值:如果你需要排除边界值,不能使用 BETWEEN AND,而应该使用 >< 运算符。

    SELECT column_name
    FROM table_name
    WHERE column_name > @start_value AND column_name < @end_value;

  7. 组合使用:可以与其他条件结合使用 BETWEEN AND

    SELECT column_name
    FROM table_name
    WHERE column_name BETWEEN value1 AND value2 AND other_column = other_value;

使用 BETWEEN AND 时,需要注意以下几点:

  • BETWEEN AND 是大小写敏感的,如果用于字符串比较,将根据数据库的排序规则确定顺序。

  • 对于数值和日期,BETWEEN AND 提供了一种方便的方式来指定一个闭区间。

  • 在使用 BETWEEN AND 进行字符串比较时要小心,因为字符串是按照字典顺序比较的,这可能不是你想要的逻辑顺序。

  • 在某些情况下,使用 BETWEEN AND 可能不如使用 >=<= 运算符直观,特别是对于边界值的包含性。


http://www.mrgr.cn/news/1487.html

相关文章:

  • Revite二次开发_使用WPF和WebView2制作一个访问网站的窗口
  • Python编码系列—Python SQL与NoSQL数据库交互:深入探索与实战应用
  • C++:stack类(vector和list优缺点、deque)
  • LLM的一些基础知识:参数和内存估计
  • 基于Django框架的图书管理系统,前台采用Bootstrap框架UI,后台EasyUI框架UI
  • Unity小功能 - 贴墙滑行
  • 【游戏开发】【Unity】如何快速建造人物模型并赋予动画动作
  • 基于Python的二手车爬虫及价格预测可视化研究【多种机器学习对比研究】
  • 力扣热题100_回溯_39_组合总和
  • 全球首批后量子加密标准诞生
  • 领夹麦克风哪个牌子好?一文揭秘直播用什么领夹麦比较好
  • 测试流程自动化实践!
  • retinaface在ubuntu20.04(wsl2)下使用tensorrt(c++)部署
  • 【TCP】核心机制:延时应答、捎带应答和面向字节流
  • Public Key Cryptography文章分类总结( PKC 2020)
  • 对变量说“定”的猴王
  • Nuclei文件上传小Tips
  • 【Java 并发编程】(二) 从对象内存布局开始聊 synchronized
  • C语言之“ 数组 ”
  • UGUI使用IPointerDownHandler接口时要注意的一个小事项。