是否可以对包含DECIMAL类型的表列执行LIKE语句?或者,在十进制(或整数)字段中给出一个数字选择匹配行的最佳方法是什么?
E.g:
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
答案 0 :(得分:2)
从您的问题中不清楚您究竟想要实现什么,但基于示例查询,您需要使用常规算术运算符来实现过滤。
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
。
或者,将字段类型更改为更适合您使用它的方式。
答案 1 :(得分:0)
您可以将十进制字段转换为varchar,然后应用。
答案 2 :(得分:0)
如果您创建查询
select name from table where age like '%5%'
你可以实现这一点(至少在mysql和db2中) 但如果你喜欢匹配数字,你应该使用类似的东西:
select name from table where age > minimum and age < maximum
如果您真的对查询最后一个数字感兴趣,请尝试与模数进行比较。