我正在尝试解决如何从字符串中找到准确值的问题。
然后问题是在列 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/