Sql 如何对十进制(或整数)字段执行LIKE查询?

Sql 如何对十进制(或整数)字段执行LIKE查询?,sql,informix,Sql,Informix,是否可以对包含十进制类型的表列执行LIKE语句?或者,在十进制(或整数)字段中给定一个数字时,选择匹配行的最佳方法是什么 例如: 从表中执行类似于SELECT*的操作,其中像5岁这样的年龄将返回: Name Age John 25 Jim 45 Anna 56 Bob 55 您可以将十进制字段转换为varchar,然后像这样应用 您的问题不清楚您到底想要实现什么,但根据示例查询,您需要执行的过滤应该可以使用普通算术运算符实现 SELECT * FROM table WHERE M

是否可以对包含十进制类型的表列执行LIKE语句?或者,在十进制(或整数)字段中给定一个数字时,选择匹配行的最佳方法是什么

例如:

从表中执行类似于
SELECT*的操作,其中像5岁这样的年龄将返回:

Name  Age
John  25
Jim   45
Anna  56
Bob   55

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

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

SELECT * FROM table WHERE MOD(age, 10) = 5 -- All records where the age ends in 5
或:


现在,您已经澄清,虽然您使用的是
十进制
字段,但实际上并没有将其用作数值(如果您愿意,该要求将不存在),其他人给出的答案是合理的-将该字段转换为文本值,并在其上使用
类似的

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

如果您创建查询

select name from table where age like '%5%'
您可以实现这一点(至少在mysql和db2中) 但是,如果您希望匹配一个数字,则应使用以下内容:

select name from table where age > minimum and age < maximum
从年龄>最小值和年龄<最大值的表中选择名称


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

针对这样一个字段的
会是什么意思?上面是什么意思?以5结尾的项目?可以被5整除的项目?基本上,我想在一个带有小数的列中搜索输入数字的任何出现(按给定的顺序),无论是在开头、结尾还是中间。数据代表什么?也就是说,为什么它是十进制列?您需要做的事情意味着它是错误的数据类型。@Oded我理解,但假设它是一个遗留数据库,所以更改列类型不会有帮助。这可能是执行OP实际需要的最糟糕的方法。@Oded实际上我已经看到了一些解决方案。然而,这似乎不是很有效。@rae1n-这是我的观点。在处理数字时,转换为字符串并不是最好的选择。@Oded,如果字符串中有5,则您的解决方案不起作用。我希望能够选择与输入数字匹配的所有行,就像对字符串执行like语句一样。DB2接受第一个示例行,我不知道informix,因为我这里没有它。informix在对非字符类型使用通配符时会抱怨。我担心您必须强制转换为varchar。我假设db2在表面下也做了同样的事情(除了没有抱怨)。不过谢谢你,我明白了。我认为拥有这种功能是不可能的。@rae1n-当数据建模不正确时就会发生这种情况(例如整数字段中的电话号码…导致前导0消失)。这个答案只适用于以5结尾的数字,而不包含5。@dmaij-答案的第一部分,假设一个人正常处理数字的人。第二部分很好。
select name from table where age like '%5%'
select name from table where age > minimum and age < maximum