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

CHARINDEX (Transact-SQL)的更多相关文章

  1. sql charIndex用法

    CHARINDEX(): 写SQL语句我们经常需要判断一个字符串中是否包含另一个字符串,但是SQL SERVER中并没有像C#提供了Contains函数,不过SQL SERVER中提供了一个叫CHAE ...

  2. SQL Server中CROSS APPLY和OUTER APPLY的应用详解

    SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能.新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行.它不像JOIN那样先计算那个表表达式都可以, ...

  3. SQL Server:APPLY表运算符

    SQL Server 2005(含)以上版本,新增了APPLY表运算,为我们日常查询带来了极大的方便. 新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行.它不像JOIN那样先计算那个表表 ...

  4. sql 知识点系统汇总

    提供性能: .服务器往往具有强大的计算能力和速度..避免把大量的数据下载到客户端,减少网络上的传输量. 第一章 T-SQL 语句 1.1数据类型 文本型 -- CHAR 定长型 <=8000字节 ...

  5. T-SQL、JET SQL、PL-SQL

    数据库分为网状.层状.关系.对象四种类型,目前的数据库一般都是属于关系数据库(包括MYSQL和SQL SERVER),网状.层状基本上已成历史,对象类型尚未普及. SQL 语言是有 ANSI 标准的. ...

  6. SQL SERVER 简介及应用 - 数据库系统原理

    SQL SERVER 是一个分布式的关系型数据库管理系统(RDBMS),具有客户 - 服务器体系结构,一般发行的版本有企业版.标准版.个人版.开发版. SQL SERVER 提供的服务 MS SQL ...

  7. SQL Server中的锁 详解 nolock,rowlock,tablock,xlock,paglock

    摘自: http://www.myexception.cn/sql-server/385562.html 高手进 锁 nolock,rowlock,tablock,xlock,paglock 锁 no ...

  8. SQL Server已提交读快照隔离级别的设置

    如果要把SQL Server数据库事务隔离级别设置为已提交读快照隔离 如果直接运行下面的语句: ALTER Database [mydbname] SET READ_COMMITTED_SNAPSHO ...

  9. SQL SERVER CURSOR游标的使用(转载)

    一:认识游标 游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集. 使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式. 用SQL语言从数据库中检索数据 ...

  10. SQL 表值函数

    表值函数返回的是一张表. 情况:把传入的字符串按指定分隔符转换成数组 理解:把字符串打散,逐个插入表,这个表就是需要的数据 Create Function [dbo].[Split] ( ), ) ) ...

随机推荐

  1. pyqt QTableWidgetItem多行显示

    def __2(self): t1=QtGui.QTableWidgetItem(self.names.text()) self.tabs.tableinsertinto.setItem(0,0,t1 ...

  2. 增强型表格/报表-jqGrid使用浅析

    jqGrid是一个基于Jquery的表格插件,官网地址:http://www.trirand.com/blog演示地址:http://www.trirand.com/jqgrid/jqgrid.htm ...

  3. 简单的Dao设计模式

    简单的DAO设计模式 这两天学习到了DAO(Data Access Object 数据存取对象)设计模式.想谈谈自己的感受,刚开始接触是感觉有点难,觉得自己逻辑理不清,主要是以前学的知识比较零散没有很 ...

  4. (3)选择元素——(6)属性选择器(Attribute selectors)

    Attribute selectors are a particularly helpful subset of CSS selectors. They allow us to specify an ...

  5. 移动支付之智能IC卡与Android手机进行NFC通信

    本文来自http://blog.csdn.net/hellogv/ .引用必须注明出处.        眼下常见的智能IC卡执行着JavaCard虚拟机.智能IC卡上能够执行由精简后的Java语言编写 ...

  6. C语言获取系统当前时间转化成时间字符串

    因为保存的文件须要加上保存的时间,所以须要一个函数来将系统当前时间获取出来,同一时候转换成时间字符串.详细的时间代码例如以下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  7. BOOST中如何实现线程安全代码

    1 需要include <boost/thread.hpp> 2 背景知识请参考<boost程序库完全开发指南>第12章 3 编绎:g++ -o mthread mthread ...

  8. MFC读写配置文件

    void CFileTextDoc::OnIniread() { // TODO: Add your command handler code here CString strStudName;   ...

  9. vue 单页面应用实战

    1. 为什么要 SPA? SPA: 就是俗称的单页应用(Single Page Web Application). 在移动端,特别是 hybrid 方式的H5应用中,性能问题一直是痛点. 使用 SPA ...

  10. 一般处理程序、ASP.NET核心知识(5)--转载

    初窥 1.新建一个一般处理程序 新建一个一般处理程序 2.看看里头的代码 public class MyHandler : IHttpHandler { public void ProcessRequ ...