CHARINDEX (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)的更多相关文章
- sql charIndex用法
CHARINDEX(): 写SQL语句我们经常需要判断一个字符串中是否包含另一个字符串,但是SQL SERVER中并没有像C#提供了Contains函数,不过SQL SERVER中提供了一个叫CHAE ...
- SQL Server中CROSS APPLY和OUTER APPLY的应用详解
SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能.新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行.它不像JOIN那样先计算那个表表达式都可以, ...
- SQL Server:APPLY表运算符
SQL Server 2005(含)以上版本,新增了APPLY表运算,为我们日常查询带来了极大的方便. 新增的APPLY表运算符把右表表达式应用到左表表达式中的每一行.它不像JOIN那样先计算那个表表 ...
- sql 知识点系统汇总
提供性能: .服务器往往具有强大的计算能力和速度..避免把大量的数据下载到客户端,减少网络上的传输量. 第一章 T-SQL 语句 1.1数据类型 文本型 -- CHAR 定长型 <=8000字节 ...
- T-SQL、JET SQL、PL-SQL
数据库分为网状.层状.关系.对象四种类型,目前的数据库一般都是属于关系数据库(包括MYSQL和SQL SERVER),网状.层状基本上已成历史,对象类型尚未普及. SQL 语言是有 ANSI 标准的. ...
- SQL SERVER 简介及应用 - 数据库系统原理
SQL SERVER 是一个分布式的关系型数据库管理系统(RDBMS),具有客户 - 服务器体系结构,一般发行的版本有企业版.标准版.个人版.开发版. SQL SERVER 提供的服务 MS SQL ...
- SQL Server中的锁 详解 nolock,rowlock,tablock,xlock,paglock
摘自: http://www.myexception.cn/sql-server/385562.html 高手进 锁 nolock,rowlock,tablock,xlock,paglock 锁 no ...
- SQL Server已提交读快照隔离级别的设置
如果要把SQL Server数据库事务隔离级别设置为已提交读快照隔离 如果直接运行下面的语句: ALTER Database [mydbname] SET READ_COMMITTED_SNAPSHO ...
- SQL SERVER CURSOR游标的使用(转载)
一:认识游标 游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集. 使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式. 用SQL语言从数据库中检索数据 ...
- SQL 表值函数
表值函数返回的是一张表. 情况:把传入的字符串按指定分隔符转换成数组 理解:把字符串打散,逐个插入表,这个表就是需要的数据 Create Function [dbo].[Split] ( ), ) ) ...
随机推荐
- 【多线程】--生产者消费者模式--Lock版本
在JDK1.5发布后,提供了Synchronized的更优解决方案:Lock 和 Condition 我们使用这些新知识,来改进例子:[多线程]--生产者消费者模式--Synchronized版本 改 ...
- openldap---ldapsearch使用
ldapsearch 參数表 下表描写叙述能够用于 ldapsearch 的区分大写和小写的參数. 參数 用途 -? 打印关于使用 ldapsearch 的帮助. -a deref 指定别名反向引用. ...
- vs2010 正式版官方下载地址
北京时间2010年4月12日12:00,微软Visual Studio 2010 正式版提供官方下载,眼下有三个版本号,Professional/Premium/Ultimate. 注意原页面的链接R ...
- ping不通的几种可能原因
平时使用中常常会碰到ping不通的情况,ping不通的原因有非常多,比方路由设置问题,比方网络问题,下面列出几点原因: 1.太心急.即网线刚插到交换机上就想Ping通网关,忽略了生成树的收敛 ...
- BOOST 线程完全攻略 - 扩展 - 可被关闭的线程类
本文假设读者已经基本了解boost线程库的使用方法. boost是个开源工程,线程这一块也在不断完善之中,到现在这个阶段,boost::thread仅仅实现了一个完美的技术框架,但是读者在实际使用中会 ...
- jxl读写excel的方法
jxl 只有excel基本的操作,代码操作比较方便,一般使用jxl就够了,对图片支持较好 poi功能比jxl强大但是比较吃内存,支持计算公式 具体参考链接 http://www.cnblogs. ...
- html进阶css(2)
选择器的类型 <!doctype html> <html> <head> <meta charset="utf-8"> <ti ...
- Oracle 回忆录
简述 工作时间说短也不算短了,掐指一算差不多三年了吧.以前都没有写过Blog,仅偶尔对所学和所用到的做些许整理,后面竟然没有把那留下来,悲催啊!留不下来的整理不是好东西(*^__^*) 嘻嘻……,现在 ...
- self和this的不同
在Java和C++中,this总是指的是当前实例地址,而在静态方法也就是类方法中,是不可以使用this的.在Objectvie-C中,self是既可以出现在实例方法中,也可以出现在类方法中,并且在不同 ...
- python多线程抓取网页信息
#!/usr/env python #-*- coding: utf-8 -*- import urllib import urllib2 import random import requ ...