ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQL CHARINDEX - 判断是否包含字符/表达式

2021-12-28 09:34:55  阅读:196  来源: 互联网

标签:-- doc expressionToSearch CHARINDEX 表达式 SQL SELECT


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  更新时间:

标签:--,doc,expressionToSearch,CHARINDEX,表达式,SQL,SELECT
来源: https://www.cnblogs.com/guorongtao/p/15739318.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有