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