gpt4 book ai didi

使用 REGEXP 查找匹配字符串的 MySQL 查询不起作用

转载 作者:可可西里 更新时间:2023-11-01 08:03:59 24 4
gpt4 key购买 nike

我正在使用 MySQL 5.5

我有一个名为 nutritions 的表,其中有一列 serving_data 数据类型为 text

serving_data 列中的一些值如下:

[{"label":"1 3\/4 cups","unit":"3\/4 cups"},{"label":"1 cups","unit":"3\/4 cups"},{"label":"1 container (7 cups ea.)","unit":"3\/4 cups"}]

现在,我想查找包含 serving_data 的记录,例如 1 3\/4 cups

为此我做了一个查询,

SELECT id,`name`,`nutrition_data`,`serving_data`
FROM `nutritions` WHERE serving_data REGEXP '(\d\s\\\D\d\scup)+';

但是似乎不起作用。

我也试过了

SELECT id,`name`,`nutrition_data`,`serving_data`
FROM `nutritions` WHERE serving_data REGEXP '/(\d\s\\\D\d\scup)+/g';

如果我在 http://regexr.com/ 中使用相同的模式那么它似乎匹配。

谁能帮帮我?

最佳答案

请注意,在 MySQL 正则表达式中,不能使用 \d\D\s 等简写类,将它们替换为 [0-9][^0-9][[:space:]]

你可以使用

REGEXP '[0-9]+[[:space:]][0-9]+\\\\/[0-9]+[[:space:]]+cup'

参见 regex demo (请注意,一般来说,regex101.com 不支持 MySQL 正则表达式风格,但 PCRE 选项支持 POSIX 字符类,如 [:digit:][:space:],因此这里仅用于演示,而不是证明它适用于 MySQL REGEXP)。

图案细节:

  • [0-9]+ - 1 个或多个数字
  • [[:space:]] - 一个空格
  • [0-9]+- 1 个或多个数字
  • \\\\/ - 文字 \/ 字符序列
  • [0-9]+[[:space:]]+cup - 1 个或多个数字,1 个或多个空格,cup

请注意,您可以使用单词边界来精确单词 cup,在其后添加 [[:>:]] 模式以匹配 cup 作为一个整体。

关于使用 REGEXP 查找匹配字符串的 MySQL 查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39146510/

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