zoukankan      html  css  js  c++  java
  • CHARINDEX (Transact-SQL)

    SQL Server 2014
    其他版本
    2(共 3)对本文的评价是有帮助 - 评价此主题

    在一个表达式中搜索另一个表达式并返回其起始位置(如果找到)。

    主题链接图标 Transact-SQL 语法约定

     
     
    CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] )
    
    expressionToFind

    包含要查找的序列的字符表达式 expressionToFind 最多包含 8000 个字符。

    expressionToSearch

    要搜索的字符表达式。

    start_location

    表示搜索起始位置的 integer 或 bigint 表达式。 如果未指定 start_location,该参数为负数或 0,则从 expressionToSearch 开头开始搜索。

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

    如果 expressionToFind 或 expressionToSearch 之一具有 Unicode 数据类型(nvarchar 或 nchar),而另一个不是,则将另一个转换为 Unicode 数据类型。 CHARINDEX 不能与 text、ntext 和 image 数据类型一起使用。

    如果 expressionToFind 或 expressionToSearch 为 NULL,则 CHARINDEX 返回 NULL。

    如果在 expressionToSearch 中找不到 expressionToFind,则 CHARINDEX 返回 0。

    CHARINDEX 根据输入的排序规则执行比较操作。 若要以指定排序规则进行比较,则可以使用 COLLATE 将显式排序规则应用于输入。

    返回的起始位置从 1 开始,而不是从 0 开始。

    0x0000 (char(0)) 是 Windows 排序规则中未定义的字符,不能包括在 CHARINDEX 中。

    补充字符(代理项对)

    在使用 SC 排序规则时,start_location 和返回值将代理项对计为一个字符,而不是计为两个字符。 有关详细信息,请参阅排序规则和 Unicode 支持

    A.返回表达式的起始位置

    以下示例返回字符序列 bicycle 在 AdventureWorks2012 数据库的 Document 表的 DocumentSummary 列中的起始位置。

     
     
    DECLARE @document varchar(64);
    SELECT @document = 'Reflectors are vital safety' +
                       ' components of your bicycle.';
    SELECT CHARINDEX('bicycle', @document);
    GO
    

    下面是结果集:

     
     
    ----------- 
    48          
    

    B.从特定位置中搜索

    以下示例使用可选的 start_location 参数从 AdventureWorks2012 数据库的 DocumentSummary 列的第五个字符开始查找 vital。

     
     
    DECLARE @document varchar(64);
    
    SELECT @document = 'Reflectors are vital safety' +
                       ' components of your bicycle.';
    SELECT CHARINDEX('vital', @document, 5);
    GO
    

    下面是结果集:

     
     
    ----------- 
    16          
    
    (1 row(s) affected)
    

    C.搜索不存在的表达式

    以下示例显示在 expressionToSearch 中找不到 expressionToFind 时的结果集。

     
     
    DECLARE @document varchar(64);
    
    SELECT @document = 'Reflectors are vital safety' +
                       ' components of your bicycle.';
    SELECT CHARINDEX('bike', @document);
    GO
    

    下面是结果集:

    -----------

    0

    (1 row(s) affected)

    D.执行区分大小写的搜索

    以下示例在 'This is a Test' 中执行区分大小写的字符串 'TEST' 搜索。

     
     
    USE tempdb;
    GO
    --perform a case sensitive search
    SELECT CHARINDEX ( 'TEST',
           'This is a Test'
           COLLATE Latin1_General_CS_AS);
    

    下面是结果集:

    -----------

    0

    以下示例在 'Das ist ein Test' 中执行区分大小写的字符串 'Test' 搜索。

     
     
    USE tempdb;
    GO
    SELECT CHARINDEX ( 'Test',
           'This is a Test'
           COLLATE Latin1_General_CS_AS);
    

    下面是结果集:

    -----------

    13

    E.执行不区分大小写的搜索

    以下示例在 'Das ist ein Test' 中执行不区分大小写的字符串 'TEST' 搜索。

     
     
    USE tempdb;
    GO
    SELECT CHARINDEX ( 'TEST',
           'This is a Test'
           COLLATE Latin1_General_CI_AS);
    GO
    

    下面是结果集:

    -----------

    13

  • 相关阅读:
    大四实习有点晚[转载]
    .net2.0数据绑定语法
    明天要去南京了
    Master & Content Page Relation(Event Ordering)
    在验证中使用图像和声音(ErrorMessage)
    设置FLash透明
    Basic Skill in .net2.0
    教育研究方法
    程序员是如何捕猎大象的[转]
    My lost card
  • 原文地址:https://www.cnblogs.com/zhouyunbaosujina/p/3957329.html
Copyright © 2011-2022 走看看