Php 将列中的单个单词与多单词字符串匹配

Php 将列中的单个单词与多单词字符串匹配,php,mysql,Php,Mysql,我们正在根据账号验证银行名称 当提供帐号时,第三方API返回银行名称。这是一个多字字符串,它无法返回固定的值列表 我们需要对照数据库表中的银行名称列表检查API返回的银行。为此,我们有一个包含银行名称同义词的表,我们希望使用该表进行匹配。请参阅下面的SQL语句 为此,如果API返回“香港上海汇丰银行股份有限公司”或“香港上海汇丰银行股份有限公司”等,我们希望在表中找到“香港”、“香港”或“上海”的匹配项 看到我们希望将表中的一个单词与一个多单词字符串进行匹配,我不知道如何在MySQL中实现这一点

我们正在根据账号验证银行名称

当提供帐号时,第三方API返回银行名称。这是一个多字字符串,它无法返回固定的值列表

我们需要对照数据库表中的银行名称列表检查API返回的银行。为此,我们有一个包含银行名称同义词的表,我们希望使用该表进行匹配。请参阅下面的SQL语句

为此,如果API返回“香港上海汇丰银行股份有限公司”或“香港上海汇丰银行股份有限公司”等,我们希望在表中找到“香港”、“香港”或“上海”的匹配项

看到我们希望将表中的一个单词与一个多单词字符串进行匹配,我不知道如何在MySQL中实现这一点

数据库中银行名称表的SQL

CREATE TABLE IF NOT EXISTS `bank_names` (
  `bank_name_id` int(11) NOT NULL AUTO_INCREMENT,
  `bank` varchar(50) NOT NULL,
  PRIMARY KEY (`bank_name_id`),
  UNIQUE KEY `bank` (`bank`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

INSERT INTO `bank_names` (`bank`) VALUES
('kong'),
('hong'),
('shanghai'),
('westminster'),
('citi'),
('citibank');
我试过

SELECT * 
FROM `bank_names` 
WHERE bank LIKE '%Hong Kong and Shanghai Banking Corporation%';
这显然是行不通的

提前谢谢。

试试这个:

SELECT * 
FROM `bank_names` 
WHERE  'Hong Kong and Shanghai Banking Corporation' LIKE CONCAT('%', bank, '%') ;
这将返回OP中列出的前三个示例记录。

尝试以下操作:

SELECT * 
FROM `bank_names` 
WHERE  'Hong Kong and Shanghai Banking Corporation' LIKE CONCAT('%', bank, '%') ;
这将返回OP中列出的前三个示例记录。

使用
in()
语句而不是
类似的

SELECT * FROM `bank_names`
WHERE `bank` in('Hong','Kong','and','Shanghai'...)
SELECT * FROM `bank_names` t
WHERE '%Hong Kong and Shanghai Banking Corporation' like concat('%',t.bank,'%')
或使用类似的

SELECT * FROM `bank_names`
WHERE `bank` in('Hong','Kong','and','Shanghai'...)
SELECT * FROM `bank_names` t
WHERE '%Hong Kong and Shanghai Banking Corporation' like concat('%',t.bank,'%')
在()中使用
语句而不是像
那样使用

SELECT * FROM `bank_names`
WHERE `bank` in('Hong','Kong','and','Shanghai'...)
SELECT * FROM `bank_names` t
WHERE '%Hong Kong and Shanghai Banking Corporation' like concat('%',t.bank,'%')
或使用类似的

SELECT * FROM `bank_names`
WHERE `bank` in('Hong','Kong','and','Shanghai'...)
SELECT * FROM `bank_names` t
WHERE '%Hong Kong and Shanghai Banking Corporation' like concat('%',t.bank,'%')

中使用
,或在
集中使用
查找

SELECT * 
FROM `bank_names` 
WHERE bank IN ('Hong', 'Kong', 'and', 'Shanghai', 'Banking', 'Corporation');


中使用
,或在
集中使用
查找

SELECT * 
FROM `bank_names` 
WHERE bank IN ('Hong', 'Kong', 'and', 'Shanghai', 'Banking', 'Corporation');


您可以使用
FIND_IN_SET
IN
…,只需将字符串转换为数组并使用它们。您可以使用
FIND_IN_SET
IN
…,只需将字符串转换为数组并使用它们。