mysql - 在 mysql 中查找确切的值

标签 mysql sql

我正在尝试解决如何从字符串中找到准确值的问题。

Database

然后问题是在列 StringB 中搜索值 1,它会找到包含 1 的所有行。我的想法是,如果我在 StringB 中查找值 1,它应该只会找到值准确的位置。

使用 LIKE 不是一个完美的选择,因为它将获取包含 1 的所有行,使用 = 也不是一个选项,因为它寻找相等的值(value)。 还尝试使用 INSTR,但它的工作原理与 LIKE 几乎相同。 与 Locate 相同。

目前存储的格式有:

  • 数字(例如:“2”不带“”)
  • 号码。 (例如:“2.”没有“”)
  • number.number(例如:“2.23.52.12.35”不带“”)

而且它们不会改变。

该列只存储数字,不存储字母或其他类型的字符串 ONLY numbers (integer type)

有什么方法可以严格搜索值吗?

我的数据库是 InnoDB。感谢您的宝贵时间。

最佳答案

尝试使用 REGEXP:

SELECT *
FROM yourTable
WHERE CONCAT('.', StringB, '.') REGEXP CONCAT('[.]', '2', '[.]');

Demo

我们也可以使用 LIKE 代替 REGEXP:

SELECT *
FROM yourTable
WHERE CONCAT('.', StringB, '.') LIKE CONCAT('%.', '2', '.%');

关于mysql - 在 mysql 中查找确切的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50115366/

相关文章:

Mysql 查询按日期搜索

mysql - 如何将无效的字符串格式日期值转换为 null

php - 将 URL 重定向到正确的用户页面

sql - Sybase Jconnect 驱动程序 - 默认获取大小是多少以及增加获取大小是否对我有利

mysql - 根据条件将表与自身连接 t-sql

Mysql 在 select 语句中设置局部变量并仅通过一个查询返回相同的 select 输出

php - MySQL 乘法查询结果(LEFT JOIN、SUM、COUNT、GROUP BY)

php - 优化大表上的计数 SQL 查询

mysql - gem 安装 mysql ... 错误

java - 在 Java 中将毫秒转换为时间戳