MySQL中的多字符串文本

MySQL中的多字符串文本,mysql,sql-like,Mysql,Sql Like,意外地遇到了一些奇怪的事情 SELECT*from tablename,其中mytext类似于“%string1%”“%1234%” 工作完全等同于 SELECT*from tablename,其中mytext类似于“%string1%”,mytext类似于“%1234%” 我的代码有问题,或者我只是不知道它,在文档中找不到?如前所述,字符串文本会自动连接起来 例如,'hello''world'相当于单个文本'helloworld' 因此,当你写作时: SELECT * from tablena

意外地遇到了一些奇怪的事情

SELECT*from tablename,其中mytext类似于“%string1%”“%1234%”

工作完全等同于
SELECT*from tablename,其中mytext类似于“%string1%”,mytext类似于“%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

谢谢这正是我需要的。