SQL CHARINDEX - 判断是否包含字符(表达式),返回字符(表达式)的开始位置
SQL CHARINDEX - 判断是否包含字符(表达式),返回字符(表达式)的开始位置
1、CHARINDEX(charindex) 函数介绍
此函数会在第二个字符表达式中搜索一个字符表达式,这将返回第一个表达式(如果发现存在)的开始位置。
1 | 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 常用
1 2 3 4 5 | DECLARE @doc VARCHAR (64); SELECT @doc = 'Hi 滔Roy! ' + 'These are from MSSQL ' ; SELECT CHARINDEX( 'MSSQL' , @doc); --输出 25 GO |
2.2 从第n个字符开始搜索
1 2 3 4 5 6 7 8 9 10 11 12 13 | --从第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)
1 2 3 4 5 6 7 8 9 10 11 12 | --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 希望内容对你有所帮助,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报