要想在SQL里面实现查找,大致分为精确查找和模糊查找两种方式。一般来说,实现查找的函数大概有LIKE、PATINDEX和charindex三个函数。
这三个函数各有千秋,可根据需要来选择以实现我们的查找功能。下面,为大家介绍如何使用PATINDEX来查找。
一、精确查找
所谓精确查找,指的是,在不拆分关键字的情况下,将一整串字符当作一个关键字来查找。这种查找方式准确度高,但是也存在不一定能找到信息的情况。
代码示例
SELECT ID, Title, DateTime, ReadNum FROM Article WHERE PATINDEX('%网络%', Title) > 0
上面的语句,在查找的时候目的“网络”二字作为关键字进行查找。
二、模糊查找
该查找方式,以几种方式进行联合查找。①将整条字符当作关键字来查找;②将整条字符拆分为多个词组(关键字)来查找;③将整条字符拆分为单一的字符来查找。
示例代码
SELECT ID, Title, DateTime, ReadNum FROM Article WHERE PATINDEX('%[网络]%', Title) > 0
注意看上面的查询语句,多了一对[]符号
上面的输入的查找内容是“网络”二字,但是在进行模糊查找的时候,是这样来找的,即找“网”字,也找“络”字,同时,也找“网络”二字。
知识拓展:
语法
PATINDEX ( '%pattern%' , expression )
备注:如果 pattern 或 expression 为 NULL,则当数据库的兼容级别为 70 时,PATINDEX 将返回 NULL;如果数据库兼容级别小于或等于 65,则仅当 pattern 和 expression 同时为 NULL 时,PATINDEX 才返回 NULL。
PATINDEX 基于输入的排序规则执行比较。若要以指定排序规则进行比较,则可以使用 COLLATE 将显式排序规则应用于输入值。
参数
pattern :一个文字字符串。可以使用通配符,但 pattern 之前和之后必须有 % 字符(搜索第一个或最后一个字符时除外)。pattern 是字符串数据类型类别的表达式。
expression:一个表达式,通常为要在其中搜索指定模式的列,expression 为字符串数据类型类别。
返回类型:如果 expression 的数据类型为 varchar(max) 或 nvarchar(max),则为 bigint,否则为 int。
代码示例:
select patindex('%abb','abcaabbeeabb') 返回10,也就是abb在后面第一次出现的位置。
select patindex('abb%','abbcaabbeeabb') 返回1,也就相当于起始值
select patindex('%[^r]%','rrrdsdddrdaadadffdr') 返回4,除[]中的字符串的匹配字符,第一次出现d不在[^r]里,所以就找到第一次这位。