zoukankan      html  css  js  c++  java
  • SQL CHARINDEX 判断是否包含字符(表达式),返回字符(表达式)的开始位置

    SQL CHARINDEX - 判断是否包含字符(表达式),返回字符(表达式)的开始位置

    1、CHARINDEX(charindex) 函数介绍

    此函数会在第二个字符表达式中搜索一个字符表达式,这将返回第一个表达式(如果发现存在)的开始位置。

    CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
    

    参数说明:

    • expressionToFind  //一个字符表达式,其中包含要查找的序列。 expressionToFind 限制为 8000 个字符 。
    • expressionToSearch   //要搜索的字符表达式。
    • start_location  //表示搜索开始位置的 integer 或 bigint 表达式 。 如果 start_location 未指定、具有负数值或 0,搜索将从 expressionToSearch 的开头开始 。

    返回类型:如果 expressionToSearch 具有一个 nvarchar(max)、varbinary(max) 或 varchar(max) 数据类型,则为 bigint;否则为 int 。

    备注:

    • 如果 expressionToFind 或 expressionToSearch 表达式具有一个 Unicode 数据类型(nchar 或 nvarchar),而其他的表达式不具有,CHARINDEX 函数则会将其他表达式转换为一个 Unicode 数据类型 。 CHARINDEX 不能与 image、ntext 和 text 数据类型一起使用 。
    • 如果 expressionToFind 或 expressionToSearch 表达式具有 NULL 值,CHARINDEX 则返回 NULL 。
    • 如果 CHARINDEX 在 expressionToSearch 中找不到 expressionToFind,CHARINDEX 则返回 0 。
    • CHARINDEX 根据输入排序规则执行比较操作。 若要以指定的排序规则执行比较,可以使用 COLLATE 将显式排序规则应用于输入。
    • 返回的起始位置从 1 开始,而不是从 0 开始。
    • 0x0000 (char(0)) 是 Windows 排序规则中未定义的字符,不能包括在 CHARINDEX 中 。

    2、使用示例:

    2.1 常用

    DECLARE @doc VARCHAR(64);  
    SELECT @doc = 'Hi 滔Roy! ' +  
                       'These are from MSSQL ';  
    SELECT CHARINDEX('MSSQL', @doc);  --输出 25
    GO
    

    2.2 从第n个字符开始搜索

    --从第2个字符开始搜索
    DECLARE @doc VARCHAR(64);  
    SELECT @doc = 'Hi 滔Roy! ' +  
                       'These are from MSSQL ';  
    SELECT CHARINDEX('滔Roy', @doc,2);  --输出 4
    GO
    
    --从第5个字符开始搜索
    DECLARE @doc VARCHAR(64);  
    SELECT @doc = 'Hi 滔Roy! ' +  
                       'These are from MSSQL ';  
    SELECT CHARINDEX('滔Roy', @doc,5);  --输出 0
    GO
    

    2.3 区分大小写(Latin1_General_CS_AS)和不区分大小写(Latin1_General_CI_AS)

    --COLLATE Latin1_General_CS_AS 区分大小写
    DECLARE @doc VARCHAR(64);  
    SELECT @doc = 'Hi 滔Roy! ' +  
                       'These are from MSSQL ';  
    SELECT CHARINDEX('mssql', @doc COLLATE Latin1_General_CS_AS);  --输出 0
    GO
    --COLLATE Latin1_General_CI_AS 不区分大小写
    DECLARE @doc VARCHAR(64);  
    SELECT @doc = 'Hi 滔Roy! ' +  
                       'These are from MSSQL ';  
    SELECT CHARINDEX('mssql', @doc COLLATE Latin1_General_CI_AS );  --输出 25
    GO
    

      

      

      

      

    创建时间:2021.12.28  更新时间:

    博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你所有帮助,谢谢!
  • 相关阅读:
    mysql-python不支持python3
    解决:python安装mysqldb模块报 EnvironmentError: mysql_config not found
    自动ftp脚本,aix/linux 和 windows
    Poi设置列样式
    sails中创建和使用services
    test
    知识科普:IM聊天应用是如何将消息发送给对方的?(非技术篇)
    IM开发者的零基础通信技术入门(一):通信交换技术的百年发展史(上)
    鹅厂7年终有离开之日,记离职鹅厂最后30天的真实心路历程
    仿微信的IM聊天时间显示格式(含iOS/Android/Web实现)[图文+源码]
  • 原文地址:https://www.cnblogs.com/guorongtao/p/15739318.html
Copyright © 2011-2022 走看看