如何对DECIMAL(或INTEGER)字段执行LIKE查询?

时间:2012-12-03 14:28:09

标签: sql informix

是否可以对包含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

3 个答案:

答案 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

如果您真的对查询最后一个数字感兴趣,请尝试与模数进行比较。