Mysql 将具有LIKE运算符的SQL查询转换为具有筛选器的SQL查询
是否可以将使用Mysql 将具有LIKE运算符的SQL查询转换为具有筛选器的SQL查询,mysql,sql,Mysql,Sql,是否可以将使用LIKE运算符的SQL查询转换为仅使用等式和不等式筛选器而不使用LIKE运算符的SQL查询。两个查询的输出必须相同 如果可能,如何做到 我正在使用MySQL数据库 我尝试了解决方案,但没有成功。我不理解您的问题,但您可以通过以下方式使用mysql函数: select mycol from mytbl where mycol like "test%" 将与以下内容相同: select mycol from mytbl where left(mycol,4
LIKE
运算符的SQL查询转换为仅使用等式和不等式筛选器而不使用LIKE
运算符的SQL查询。两个查询的输出必须相同
如果可能,如何做到
我正在使用MySQL数据库
我尝试了解决方案,但没有成功。我不理解您的问题,但您可以通过以下方式使用mysql函数:
select
mycol
from
mytbl
where
mycol like "test%"
将与以下内容相同:
select
mycol
from
mytbl
where
left(mycol,4) = "test"
如果不使用任何类型的
函数
(正如您在@jonlester answer中的注释所述),就不可能实现您想要的功能
使用简单函数执行此操作的方法如下:
select
mycol
from
mytbl
where
INSTR(mycol,test) > 0
你有两个选择
1. SELECT myColumn FROM myTable WHERE INSTR(myColumn,'myString') = 1
2. SELECT myColumn FROM myTable WHERE LOCATE('myString',myColumn) = 1
祝你好运!!!干杯 如果在查询列时使用
LIKE
查找子元素,则可以在插入/更新这些子元素时将其拆分为单独的列,以便在搜索条件中使用相等运算符。当您指定要求时,我认为您应该着眼于集成全文索引的方向
比如,看看SOLR、Lucene或类似的解决方案。您可能想从这里开始,然后单击/google从那里开始。在某些情况下,这可能是可能的,但并非全部。发布您的查询和您迄今为止尝试的内容。也可以说你为什么需要这样做,因为其他人可能知道解决你问题的更好方法<例如,code>REGEXP。@klenpette任何需要LIKE运算符的查询。Ex-查找前两个字母为SR..@SRK的学生姓名不可能。我真想知道你为什么需要这样做。@xdazz实际上我正在进行查询优化。@SRK:阅读MySQL关于查询优化的文档。问题是我只想使用相等和不相等过滤器(甚至不是聚合函数)来提供类似的功能。有可能吗?@jonlester这不适用于所有的
比如s。例如:类似于“%test%”