gpt4 book ai didi

MySQL 字符串匹配多个单词

转载 作者:行者123 更新时间:2023-11-29 15:07:24 25 4
gpt4 key购买 nike

This page

有一个很好的例子,使用 REGEXP 进行模式匹配。 REGEXP 的问题与以下字符串不匹配:

  • “约翰先生”
  • “约翰博士”
    甚至:
  • “无名氏先生”

带有字符串“John Doe”

我想知道如何获得给定示例的正匹配项?

这里是一个示例代码:


Drop table Names;

CREATE TABLE Names (
first_name VARCHAR(20),
last_name VARCHAR(20)

);

INSERT INTO Names VALUES ('John','Doe');
INSERT INTO Names VALUES ('Sue','Yin');
INSERT INTO Names VALUES ('Diego James', 'Franco');

select * from Names;

/*To find names containing a string */
/*I want this to march John Doe*/
SELECT * FROM Names WHERE first_name REGEXP 'Mr John';
/*This has John misspelled, I want it to match John Doe */
SELECT * FROM Names WHERE first_name REGEXP 'Hohn' AND last_name REGEXP 'Doe';
/*And this would match Diego James Franco*/
SELECT * FROM Names WHERE first_name REGEXP 'Dr Diego' AND last_name REGEXP 'Franco';

-谢谢

更新:谢谢您的回答,问题不是如何使用正则表达式来进行我想要的匹配,而是无论 REGEXP 如何,我怎样才能做到这一点。我使用 REGEXP 作为模式匹配的示例。我非常感谢对正则表达式的澄清。

最佳答案

正则表达式并不意味着匹配不精确的字符串(例如,拼写错误)。看来这就是您正在尝试做的事情。例如,可以使用正则表达式来匹配任何社会安全号码(三个数字后跟连字符,后跟两个数字,再后跟另一个连字符,后跟四位数字)。但您无法使用正则表达式来匹配 John 的拼写错误。拼写错误可以使用一些更高级的编码来处理,通常称为 n-gram 匹配(请参阅: http://en.wikipedia.org/wiki/N-gram )。如果您也在使用 Ruby-on-Rails,那么有一个很棒的 Gem(称为 Chrononaut-no_fuzz)可以为您处理此问题,但使用普通 MySQL,您可能必须手动编写此功能。

关于MySQL 字符串匹配多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1717184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com