在mysql中查找确切的值

时间:2018-05-01 11:03:42

标签: mysql sql

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

Database

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

使用LIKE不是一个完美的选择,因为它会占用包含1的所有行,使用=也不是一个选项,因为它搜索的是相等的值。 还尝试使用INSTR,但它的工作方式与LIKE几乎相同。 与Locate相同。

目前存储格式:

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

他们不会改变。

此collumn仅存储数字,无字母或其他类型的字符串ONLY数字(整数类型)

有没有办法严格搜索价值?

我的数据库是InnoDB。谢谢你的时间。

2 个答案:

答案 0 :(得分:2)

尝试使用REGEXP

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

Demo

我们也可以使用LIKE代替REGEXP

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

答案 1 :(得分:1)

如果你这样做:

where stringB = 1

然后MySQL必须弄清楚要使用的类型。根据SQL规则,它会将'1.00'转换为数字 - 并且它们匹配。

如果你这样做

where stringB = '1'

然后类型做你想要的。并将值作为字符串进行比较。

更多:保持类型一致。不要依赖隐式转换。