大众计算机学习网欢迎诸位!收藏本站注 册登 陆
常用教程:基础知识网络知识操作系统WPS网页制作数据库算法网页成功之路网络安全最新技术古典mid流行midmid背景下载中心
您现在的位置:首页 > 教程 > 文章页

Sql使用PATINDEX实现精确查找模糊查找

Admin | 2016-3-12 4:13:22 | ReadNums | 2130 | 标签 数据库Sql,VFP,Access | 打印本页
     

  要想在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]里,所以就找到第一次这位。


问题未解决:在线咨询我要在线咨询问题

网友评论

(访客)
内容实用原创,讲得很好。
20xx年x月x日
(站长)
有问题请在线咨询。
20xx年x月x日