MySQL中的多个字符串文字



偶然遇到了一些奇怪的事情。

SELECT * from tablename WHERE mytext LIKE '%string1%' '%1234%';
工作绝对等于
SELECT * from tablename WHERE mytext LIKE '%string1%' AND mytext LIKE '%1234%';

我的代码出了问题,或者我只是不知道,在文档中找不到它?

字符串文字会自动连接起来,如下所述。

例如,'hello' 'world'等效于单个文字'helloworld'

因此,当你写:

SELECT * from tablename WHERE mytext LIKE '%string1%' '%1234%';

这实际上相当于写:

SELECT * from tablename WHERE mytext LIKE '%string1%%1234%';

正如你所指出的,这有点类似于:

SELECT * from tablename WHERE mytext LIKE '%string1%' AND mytext LIKE '%1234%';

但并不完全如此。事实上,前者将匹配'string1 1234',但不匹配'1234 string1'

请尝试以下示例进行验证:

create table tablename(
pkey bigint,
mytext varchar(64)
);
insert into tablename values (1, 'a b'), (2, 'a c'), (3, 'b a');
select * from tablename where mytext like '%a%' '%b%'; -- returns 1 row
select * from tablename where mytext like '%a%' and mytext like '%b%'; -- returns two rows

相关内容

  • 没有找到相关文章

最新更新