MySQL通配符用于="E;”有吗

MySQL通配符用于="E;”有吗,mysql,wildcard,Mysql,Wildcard,所以 我会归还一切。查询是否有通配符 SELECT * FROM table WHERE col LIKE '%' 显然,*不起作用,我只是把它放在那里,以指示我想要通配符的位置。我从中选择的列包含一个介于1和12之间的整数,我希望能够选择具有特定数字的所有记录,或者选择具有通配符的所有记录 谢谢,使用LIKE的原因是=不提供通配符支持。否则就没有理由这样 SELECT * FROM table WHERE col = '*' i、 e.正则表达式,如。如果要选择所有内容,为什么要附加WHE

所以

我会归还一切。查询是否有通配符

SELECT * FROM table WHERE col LIKE '%'
显然,
*
不起作用,我只是把它放在那里,以指示我想要通配符的位置。我从中选择的列包含一个介于1和12之间的整数,我希望能够选择具有特定数字的所有记录,或者选择具有通配符的所有记录


谢谢,

使用LIKE的原因是=不提供通配符支持。否则就没有理由这样

SELECT * FROM table WHERE col = '*'

i、 e.正则表达式,如。

如果要选择所有内容,为什么要附加WHERE子句?只要有条件地关闭它,而不是在其中放入通配符。

假设您的查询是参数驱动的,case语句可能是合适的

SELECT * FROM table WHERE col RLIKE '.*'

其中,
@myvariable
如果不需要值,则为null,否则它将使用您传入的整数值。

LIKE基本上与=,除了LIKE允许使用通配符

这两个查询将返回相同的结果:

select * from mytable
where col like case when @myvariable is null then % else myvariable end
如果LIKE查询中没有“%”,它实际上与“=”相同

如果在整数列上进行选择,则应该考虑使用In()或运算符。听起来您有两个单独的条件应该在代码中处理,而不是在查询中处理,因为您的条件要求您至少需要两种不同的查询


编辑:我应该澄清,LIKE和=仅在正常、单调的字符串比较用法中是相似的。您应该查看它如何工作的详细信息,因为有些情况下它是不一样的(例如语言集)。

zombat的答案很好,但我只在他的答案中注意到您选择的是整数。他在()和()之间提到。下面是使用这些语法的示例,以及整数字段的一些其他选项

SELECT * FROM table WHERE col LIKE 'xyz';
SELECT * FROM table WHERE col='xyz';
从col=1的表格中选择*;
从col介于1和12之间的表格中选择*;
从列在6和12之间的表格中选择*;
从col=6的表格中选择*;
从col>6的表格中选择*;
从第6列的表格中选择*;
从列位于(1,2,5,6,10)中的表格中选择*;
从列不在(1,2,5,6,10)中的表格中选择*;

我在为报表构建存储过程时遇到过这种情况 以下是我的解决方案,希望这是您的想法:)

查询:

set @p = "ALL";

如果您的值在(1,12)范围内,则:


从col>=5和col=0的表中选择*,colI当时认为,不,这是荒谬的,他一定只是在使用通配符作为示例,实际上他会在它的一侧或两侧锚定文本。然后我详细地重读了这个问题,不,你是对的,他只需要在申请表中去掉WHERE。丹,你知道WHERE部分是可选的,对吗?如果您不选择它,那么您将选择每一行。相反,如果您这样做,则更容易拥有可选参数。您可以准备一条语句,如果不需要约束,只需在PDO的情况下将
%
传递给
execute()
。如果存在约束,则其工作原理与=。这使我的代码变得更加干净,因为从php7开始,我可以执行([$args['class']??'%')而不是准备两个单独的大ole查询!谢谢,正是我想要的。将在代码中处理它,并在需要时更改查询以包含特定的WHERE子句?我以为那只是TSQL@Joe:中间是标准SQL。我从来没有见过任何支持SQL的系统不支持中间层。谢谢你提醒我那个很棒的MySQL操作员。RLIKE aka REGEXP值得了解:
set @p = "ALL";
select * from fact_orders
where
dim_country_id = if(@p is null or @p="ALL", dim_country_id, @p)
limit 10
;