是否可以对包含 DECIMAL 类型的表列执行 LIKE 语句?或者,给定十进制(或整数)字段中的数字,选择匹配行的最佳方法是什么?
例如:
Name Age
... ...
John 25
Mary 76
Jim 45
Erica 34
Anna 56
Bob 55
执行类似SELECT * FROM table WHERE age LIKE 5
会返回:
Name Age
John 25
Jim 45
Anna 56
Bob 55
从您的问题中不清楚您到底想要实现什么,但根据示例查询,您需要做的过滤应该可以使用普通的算术运算符来实现。
SELECT * FROM table WHERE MOD(age, 10) = 5 -- All records where the age ends in 5
或者:
SELECT * FROM table WHERE MOD(age, 5) = 0 -- All records where age is divisible by 5
既然您已经澄清,虽然您使用的是一个DECIMAL
字段,但实际上并没有将其用作数值(好像您愿意,要求不存在),其他人给出的答案是合理的 - 将字段转换为文本值并使用LIKE
它。
或者,将字段的类型更改为更适合您使用它的方式。
您可以将您的十进制字段转换为 varchar,然后像这样应用。
如果您创建查询
select name from table where age like '%5%'
你可以做到这一点(至少在 mysql 和 db2 中)但是如果你喜欢匹配一个数字,你应该使用类似的东西:
select name from table where age > minimum and age < maximum
或者,如果您真的有兴趣查询最后一个数字,请尝试与模数进行比较。