Sql Server (Charindex)

Sql中CHARINDEX用法

CHARINDEX作用

写SQL语句我们经常需要判断一个字符串中是否包含另一个字符串,但是SQL SERVER中并没有像C#提供了Contains函数,不过SQL SERVER中提供了一个叫CHAEINDX的函数,顾名思义就是找到字符(char)的位置(index),既然能够知道所在的位置,当然就可以判断是否包含在其中了。通过CHARINDEX如果能够找到对应的字符串,则返回该字符串位置,否则返回0。

基本语法如下:

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
expressionToFind :目标字符串,就是想要找到的字符串,最大长度为8000 。
expressionToSearch :用于被查找的字符串。
start_location:开始查找的位置,为空时默认从第一位开始查找。

示例

创建一张表
create table Student (id int,[Name] nvarchar(50),[age] nvarchar(50),[sex] nvarchar(50))

插入数据
truncate table Student
insert into Student values (1,‘张三’,‘18’,‘男’)
insert into Student values (2,‘李四’,‘19’,‘男’)
insert into Student values (1,‘王二’,‘20’,‘男’)
insert into Student values (1,‘麻子’,‘21’,‘男’)
insert into Student values (1,‘王五’,‘22’,‘男’)
insert into Student values (1,’’,‘22’,‘男’)

1)简单用法
select charindex(‘张三’,‘这是张三’)
在这里插入图片描述

2)增加开始位置
select charindex(‘张三’,‘全中国到处都是张三’,7)
在这里插入图片描述
大3)小写敏感(默认情况下, SQL SERVER是大小不敏感的,所以我们简单示例中返回结果不为0,但是有些时候我们需要特意去区分大小写,因此专门SQL SERVE提供了特殊的关键字用于查询时区分大小写,其中CS为Case-Sensitve的缩写。)
select charindex(‘zhangsan’,'这是ZhangSan’COLLATE Latin1_General_CS_AS)
在这里插入图片描述

4)大小写不敏感(我们也可以这样说明是大小写不敏感,其中CI是Case-InSensitve的缩写,即大小写不敏感,当然我们没必要多此一举。)
select charindex(‘zhangsan’,'这是ZhangSan’COLLATE Latin1_General_CI_AS)
在这里插入图片描述

5)还可以搜索表中的字段内容
update Student set [name]=+’[’+[age]+’]’+’[’+sex+’]’ where isnull([name],’’)=’’ or charindex(‘王’,isnull(Name,’’))>0
在这里插入图片描述

发布了25 篇原创文章 · 获赞 5 · 访问量 918

猜你喜欢

转载自blog.csdn.net/qq_41863998/article/details/99978467