Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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-如何在WHERE子句中为列名本身使用通配符?_Mysql_Syntax_Where_Wildcard_Columnname - Fatal编程技术网

MySQL-如何在WHERE子句中为列名本身使用通配符?

MySQL-如何在WHERE子句中为列名本身使用通配符?,mysql,syntax,where,wildcard,columnname,Mysql,Syntax,Where,Wildcard,Columnname,我有一个关于mysql的基本问题。在我的表“table”中有一个名为“foo”(String)的列。我想这样做: SELECT * FROM table WHERE %foo% LIKE '%thing%' 但这显然是不正确的。提前谢谢。 第一个关键字是保留关键字。因此,您可能需要在其周围添加方括号带引号的背景标记。其次,您需要正确使用通配符。很多答案已经告诉你了。根据样本数据进行设置 Set @sth:= 'joh' 方法2是使用REGEXP Select * from mytable

我有一个关于mysql的基本问题。在我的表“table”中有一个名为“foo”(String)的列。我想这样做:

SELECT * FROM table WHERE %foo% LIKE '%thing%'
但这显然是不正确的。提前谢谢。

第一个关键字是保留关键字。因此,您可能需要在其周围添加方括号带引号的背景标记。其次,您需要正确使用通配符。很多答案已经告诉你了。根据样本数据进行设置

Set @sth:= 'joh'
方法2是使用
REGEXP

Select * from mytable 
where `key`
REGEXP @sth 
;
方法3是使用
instr

select * from landlord
where instr(`key`,@sth) > 0
;
您还可以尝试将与匹配。但是它似乎不能很好地处理部分字符串

这是一个
全文搜索,您的表必须能够做到这一点。假设您没有启用它,则可以使用以下
Alter
行修改表。使用
全文
搜索,实际上是在
列上添加一个索引。使用索引搜索会变得更快

`ALTER TABLE mytable ENGINE = MYISAM;`

Alter Table mytable
Add FULLTEXT(`key`)
;

Select * from mytable 
where match(`key`) 
against(%@sth% IN BOOLEAN MODE)
;

*是的,这很明显,但我的问题是较短的“key”必须是某事物的一部分,而不是其他方式
key
是保留关键字。需要在backtick.skey中引用。例如,我的问题与字段名称无关。表中有像akey1、bkey2、ckey3这样的列……有没有办法搜索像%key%这样的公共值,比如“xyz”?因此您希望在
key%
中为
KEY1、KEY2、,.etc
?我需要的是使用“%”运算符不是strin而是从列名中取值。刚才问的另一个问题的可能重复是为了完全相同的事情,但问题本身更清楚,所以我将它链接起来。哈,这是真的,我在寻找相同的答案,多么巧合:)而不是MySQL中的
[
。标识符是用反引号引起来的。@MichaelBerkowski,或者更准确地说(给定适当的设置),是用双引号引起来的。@pst在MySQL中默认为启用ANSI_引号吗?“我不这么认为。”迈克尔伯科夫斯基感谢你指出这一点。是的,我当时处于SQL Server模式;)更新。
select * from landlord
where instr(`key`,@sth) > 0
;
`ALTER TABLE mytable ENGINE = MYISAM;`

Alter Table mytable
Add FULLTEXT(`key`)
;

Select * from mytable 
where match(`key`) 
against(%@sth% IN BOOLEAN MODE)
;