Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将具有LIKE运算符的SQL查询转换为具有筛选器的SQL查询_Mysql_Sql - Fatal编程技术网

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%”