gpt4 book ai didi

php - SQL 搜索字符串中的 # 字符问题

转载 作者:行者123 更新时间:2023-11-29 03:59:34 25 4
gpt4 key购买 nike

我在我的 mySQL 搜索查询中使用了一些正则表达式,它似乎工作正常,除非我在查询中有一个 # 字符。

Regexp 匹配基于单词边界,因为此查询搜索的字段是存储在 SQL 数据库中的完整简历/简历。

例如,这按预期工作并返回正确数量的结果:

SELECT COUNT(*) n FROM candidate c WHERE (c.CV REGEXP '[[:<:]]java[[:>:]]');

然而,这并没有返回 0 个结果,而它应该返回几百个:

SELECT COUNT(*) n FROM candidate c WHERE (c.CV REGEXP '[[:<:]]c#[[:>:]]');

我现在明白了,这是因为我是按词边界匹配的,#不能是词尾。有趣的是,“C++”工作正常。

有没有一种方法可以修改此 REGEXP,使其也适用于像“c#”这样的字符串?

最佳答案

你也许可以使用这样的东西:

SELECT 'c#' REGEXP '(^|[^a-zA-Z0-9_])c#($|[^a-zA-Z0-9_])'
SELECT 'java' REGEXP '(^|[^a-zA-Z0-9_])java($|[^a-zA-Z0-9_])'

在较新的 MySQL 版本 (8.0.4+) 中,它通过 ICU 支持正则表达式,而不是 Henry Spencer 的实现,您可以使用 \w ,它看起来更简洁:

SELECT 'c#' REGEXP '(^|[^\w])c#($|[^\w])'
SELECT 'java' REGEXP '(^|[^\w])java($|[^\w])'

关于php - SQL 搜索字符串中的 # 字符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50643907/

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