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

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


精慕HU
浏览 1663回答 2
2回答

莫回无

sql server 可以用charindex()用法如下: col like '%a%' 等价于 charindex('a',col)>0mysql 可以用 locate()用法如下: col like '%a%' 等价于 locate('a',col)>0

犯罪嫌疑人X

可以使用CHARINDEX&nbsp;和&nbsp;PATINDEX两种函数,但是速度不一定快,这要分情况的。以下引用自SQL使用帮助:CHARINDEX返回字符串中指定表达式的起始位置。语法CHARINDEX ( expression1 , expression2 [ , start_location ] )参数expression1一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。expression2一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。start_location在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。PATINDEX返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。语法PATINDEX&nbsp;( '%pattern%' , expression )参数pattern一个字符串。可以使用通配符,但 pattern 之前和之后必须有 % 字符(搜索第一个和最后一个字符时除外)。pattern 是短字符数据类型类别的表达式。expression一个表达式,通常为要在其中搜索指定模式的列,expression 为字符串数据类型类别。比较CHARINDEX 和 PATINDEXCHARINDEX 和 PATINDEX 函数都返回指定模式的开始位置。PATINDEX 可使用通配符,而 CHARINDEX 不可以。这两个函数都带有两个参数:希望获取其位置的模式。使用 PATINDEX,模式是可以包含通配符的字面字符串。使用 CHARINDEX,模式是字面字符串(不能包含通配符)。字符串值表达式(通常为列名),Microsoft® SQL Server™ 在其中搜索指定的模式。例如,查找模式"wonderful"在 titles 表中 notes 列的某一特定行中的开始位置。USE pubsSELECT&nbsp;CHARINDEX('wonderful', notes)FROM&nbsp;titlesWHERE&nbsp;title_id = 'TC3218'下面是结果集:----------------46(1 row(s) affected)如果未限制搜索的行,查询将返回表中的所有行,并对在其中查找到该模式的所有行报告非零值,对其它行报告零值。例如,使用通配符查找模式"candies"在 Categories 表中的 Description 列的任一行中的开始位置:USE NorthwindGOSELECT&nbsp;CategoryID, PATINDEX('%candies%', Description)AS&nbsp;POSITIONFROM&nbsp;CategoriesWHERE&nbsp;PATINDEX('%candies%', Description) <> 0如果没有限制要搜索的行,查询将返回表中的所有行,对在其中找到该模式的所有行报告非零值。PATINDEX 对 text 数据类型很有用;除 IS NULL、IS NOT NULL 和 LIKE(这些是 WHERE 子句中对 text 类型有效的仅有的其它比较运算)外,PATINDEX 也可用于 WHERE 子句中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server