Mysql 将字符串中的单词与单元格中的单词进行比较

Mysql 将字符串中的单词与单元格中的单词进行比较,mysql,Mysql,鉴于以下情况: create table original ( dbString VARCHAR(255), c_Alfa TINYINT(4) Default 0, c_Bravo TINYINT(4) default 0, c_Charlie TINYINT(4) default 0 ); INSERT INTO original (dbString) VALUES ('Charlie Echo Delta',0,0,0), ('Foxtrot Golf Hotel',0,0,0), (

鉴于以下情况:

create table original (
dbString VARCHAR(255),
c_Alfa TINYINT(4) Default 0,
c_Bravo TINYINT(4) default 0,
c_Charlie  TINYINT(4) default 0
);

INSERT INTO original (dbString) VALUES
('Charlie Echo Delta',0,0,0),
('Foxtrot Golf Hotel',0,0,0),
('Alfa Oscar Tango',0,0,0),
('Charlie Bravo India',0,0,0);

SET @c_string := 'Alfa Bravo Charlie';
在mysql中,是否可以将@c_字符串中的单词(单词为:Alfa、Bravo和Charlie)与原始表中的dbString列进行比较,并检查单元格中是否出现一个或多个单词

结果应该是

+---------------------+------------+------------+------------+
| dbString            | c_Alfa     | c_Bravo    | c_Charlie  |
+---------------------+------------+------------+------------+
| Charlie Echo Delta  | 0          | 0          | 1          |
| Foxtrot Golf Hotel  | 0          | 0          | 0          |
| Alfa Oscar Tango    | 1          | 0          | 0          |
| Charlie Bravo India | 0          | 1          | 1          |
+---------------------+------------+------------+------------+

我还创建了一个提琴:

我认为您应该在where条件下使用LIKE,例如:
查询:

SELECT * FROM original WHERE dbString LIKE ("%" + @c_string + "%");
试试这个

SELECT dbString,
       IF(locate('Alfa',dbString), 1, 0) AS c_Alfa,
       IF(locate('Bravo',dbString), 1, 0) AS c_Bravo,
       IF(locate('Charlie',dbString), 1, 0) AS c_Charlie
FROM original;

检查一个问题:为什么在DBMS中?原因:1。使用应用程序。2.使用规范化数据?目前,这种比较不是在mysql中进行的,而是在另一个程序中进行的。我们的服务器每周需要比较这样的数据大约100万次。在DBMS中这样做可能会提高整体性能,这是我想验证的。这不起作用,因为
like
不能与之进行部分匹配-当然,也不能将单词与匹配分开。可以使用%symbol进行部分匹配,然后使用+符号与@c_字符串进行连接。请重新阅读问题<如果替换整个字符串,代码>%..%将不起作用。根据您的答案,我创建了这个小提琴手,它提供了我需要的结果。主要问题是您有解决方案吗?是的,我已经将您的答案标记为已接受。我只是想澄清我想要的最终结果,这是可能的,基于你的帖子。