gpt4 book ai didi

MySQL - 选择 * 其中一个子字符串在 char 之前

转载 作者:行者123 更新时间:2023-11-28 23:45:17 24 4
gpt4 key购买 nike

我有一个字典数据库,其中每个条目都是这样的

column
word; synonym; synonym | example of usage; example of usage

我想做一个选择函数,如果它出现在数据的第一部分(单词和同义词)而不是用法示例中(因为那里有更多单词),它只会获取该行

我一直在尝试用 REGEXP 来做

SELECT * FROM dictionary WHERE column REGEXP '[^\|]*word.*\|.*' 

但出于某种原因,这与表格中的所有内容都匹配 - 即使该词根本没有出现。

我做错了什么?

最佳答案

您需要使用双斜线来转义 MySQL 正则表达式中的特殊字符。因此,您的 \|被视为 |并且您匹配每个字符串中每个“字符”之前的每个空格。

我建议只检查是否 word出现在 | 之前与

'^[^|]*word'

或者 - 如果您需要整个单词检查:

'^[^|]*[[:<:]]word[[:>:]]'

正则表达式匹配...

  • ^ - 字符串开始
  • [^|]* - 除 | 以外的 0 个或多个字符
  • [[:<:]] - 前导词边界
  • word - 字母的字面序列
  • [[:>:]] - 尾随单词边界。

此外,此正则表达式默认不区分大小写。要使其区分大小写,请使用 BINARY关键字。

SELECT * FROM dictionary WHERE column REGEXP BINARY '^[^|]*[[:<:]]word[[:>:]]' 

关于MySQL - 选择 * 其中一个子字符串在 char 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33702725/

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