2

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

3 回答 3

3

从您的问题中不清楚您到底想要实现什么,但根据示例查询,您需要做的过滤应该可以使用普通的算术运算符来实现。

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它。

或者,将字段的类型更改为更适合您使用它的方式。

于 2012-12-03T14:38:57.007 回答
0

您可以将您的十进制字段转换为 varchar,然后像这样应用。

于 2012-12-03T14:35:32.167 回答
-1

如果您创建查询

select name from table where age like '%5%'

你可以做到这一点(至少在 mysql 和 db2 中)但是如果你喜欢匹配一个数字,你应该使用类似的东西:

select name from table where age > minimum and age < maximum

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

于 2012-12-03T14:39:27.750 回答