sql语句中的like可以用什么代替

sql语句中的like可以用什么代替,第1张

可以使用CHARINDEX 和 PATINDEX两种函数,但是速度不一定快,这要分情况的。

以下引用自SQL使用帮助:

CHARINDEX

返回字符串中指定表达式的起始位置。

语法

CHARINDEX ( expression1 , expression2 [ , start_location ] )

参数

expression1

一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。

expression2

一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。

start_location

在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。

PATINDEX

返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。

语法

PATINDEX ( '%pattern%' , expression )

参数

pattern

一个字符串。可以使用通配符,但 pattern 之前和之后必须有 % 字符(搜索第一个和最后一个字符时除外)。pattern 是短字符数据类型类别的表达式。

expression

一个表达式,通常为要在其中搜索指定模式的列,expression 为字符串数据类型类别。

比较

CHARINDEX 和 PATINDEX

CHARINDEX 和 PATINDEX 函数都返回指定模式的开始位置。PATINDEX 可使用通配符,而 CHARINDEX 不可以。

这两个函数都带有两个参数:

希望获取其位置的模式。使用 PATINDEX,模式是可以包含通配符的字面字符串。使用 CHARINDEX,模式是字面字符串(不能包含通配符)。

字符串值表达式(通常为列名),Microsoft® SQL Server™ 在其中搜索指定的模式。

例如,查找模式"wonderful"在 titles 表中 notes 列的某一特定行中的开始位置。

USE pubs

SELECT CHARINDEX('wonderful', notes)

FROM titles

WHERE title_id = 'TC3218'

下面是结果集:

----------------

46

(1 row(s) affected)

如果未限制搜索的行,查询将返回表中的所有行,并对在其中查找到该模式的所有行报告非零值,对其它行报告零值。

例如,使用通配符查找模式"candies"在 Categories 表中的 Description 列的任一行中的开始位置:

USE Northwind

GO

SELECT CategoryID, PATINDEX('%candies%', Description)AS POSITION

FROM Categories

WHERE PATINDEX('%candies%', Description) <>0

如果没有限制要搜索的行,查询将返回表中的所有行,对在其中找到该模式的所有行报告非零值。

PATINDEX 对 text 数据类型很有用;除 IS NULL、IS NOT NULL 和 LIKE(这些是 WHERE 子句中对 text 类型有效的仅有的其它比较运算)外,PATINDEX 也可用于 WHERE 子句中。

没有的。

SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL语句无论是种类还是数量都是繁多的,很多语句也是经常要用到的,SQL查询语句就是一个典型的例子,无论是高级查询还是低级查询,SQL查询语句的需求是最频繁的。

SQL反向模糊查询,需要用到的函数为instr(str1,str2),instr(str1,str2)表示st,比如:  SELECT * FROM TABLE_NAME T WHERE INSTR('唐飞',T.NAME)>0;

注:NAME为TABLE_NAME 中的一个字段,为VARCHAR类型。instr(str1,str2)>0表示str1包含str2;  instr(str1,str2)>=表示str1不包含str2。

由1、2很容易可以看出来instr完全可以替代like,至少在以上示例中可以替代。只要把str1和str2换个位置就可以达到like效果。

instr的效率是比like要高些(orace对内建函数做了优化),而且使用like时,一些索引是不能用的,但oracle支持函数索引,如果使用函数索引的话,执行更快。  

一般的数据库中,instr和like的效率是没有多大差别的,但对于oracle数据库可以通过函数索引来提高instr的执行效率。

SQL语句中通配符有四种,分别是百分号%、下划线_、方括号[

]、方括号[!](或[^])。

在搜索数据库中的数据时,SQL

通配符可以替代一个或多个字符。SQL

通配符必须与

LIKE

运算符一起使用。

1、百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。

2、下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。

3、方括号[

]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

方括号[^]或者[!]:其取值也[

]相同,但它要求所匹配对象为指定字符以外的任一个字符。

扩展资料:

SQL通配符是使用用特殊字符或语法拼写,用来执行模糊搜索指令的语句功能。在搜索数据库中的数据时,SQL

通配符可以替代一个或多个字符。

SQL

通配符必须与

LIKE

运算符一起使用。如在数据中搜索以大写“A”字母开头的字符类型数据,可以使用like

"A%"。

下划线和百分号在sql模糊查询like语句中为特殊字符,分别可匹配1个字符和0到多个字符,如果需要真正查询特殊字符得转义,如like

'a\_b%'

escape

'\',将匹配前3个字符为a_b的所有记录。

参考资料来源:搜狗百科-SQL通配符


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6422000.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-21
下一篇2023-03-21

发表评论

登录后才能评论

评论列表(0条)

    保存