MySQL:REGEXP 模式未按预期工作

标签 mysql sql

我有一个数据模式如下的数据集:

**ColumnName**
a/b
a/b:1
a/b:2
a/b.100
a/b.200
a/b:20

我需要使用 REGEXP 编写一个查询,以便它只从列中提取准确的数据,而不是相似的模式。但是,如果值中有一个点 (.),则应该在父模式中获取它。

以下是上述数据集的场景:

No.     PATTERN        RESULT
1       "a/b"           a/b
                      a/b.100
                      a/b.200
2       "a/b:1"        a/b:1
3       "a/b:2"        a/b:2 (and not a/b:20)
4       "a/b:20"       a/b:20

到目前为止,我使用的查询遵循模式 1、2 和 4,但它失败了模式 3。我得到了这两个结果,包括不应选择的结果,如上所示。

以下是我用来执行此操作的查询:

select * from table 
where (ColumnName REGEXP '<Pattern>$' or ColumnName REGEXP '<Pattern>[.^0-9]+');

我可以对这个查询做些什么来确保它遵循这种情况下的所有场景?

最佳答案

嗯。我认为打破 上的模式。 做你想做的事:

where substring_index(col, '.', 1) = v_pattern

如果模式可能包含 '.',您可能需要:

where (substring_index(col, '.', 1) = v_pattern or
       col = v_pattern
      )

关于MySQL:REGEXP 模式未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42729948/

相关文章:

php - PDO:调用未定义的方法 DB::query()

mysql - 查询动态操作

MySQL - 如何快速插入百万行?

PHP 查询多个表

php - 如何在 symfony2 中通过 Doctrine 插入记录时传递关系字段的默认值?

mysql - 连接到我在新加坡(亚太地区)的 AWS RDS 时出错

php - 使用 WHERE 时出现 SQL 语法错误

mysql - 在迁移中复制带有更改数据的 rails 表

sqlite 变量和列中未知数量的条目

Python SQL 条目不返回搜索结果