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 希望内容对你所有帮助,谢谢!
  • 相关阅读:
    poj 2485 Highways 最小生成树
    hdu 3415 Max Sum of MaxKsubsequence
    poj 3026 Borg Maze
    poj 2823 Sliding Window 单调队列
    poj 1258 AgriNet
    hdu 1045 Fire Net (二分图匹配)
    poj 1789 Truck History MST(最小生成树)
    fafu 1181 割点
    减肥瘦身健康秘方
    人生的问题
  • 原文地址:https://www.cnblogs.com/guorongtao/p/15739318.html
Copyright © 2011-2022 走看看