繁体   English   中英

sql查询字符串中的整数

[英]sql query integer in string

我有一个我无法修改的数据库,该数据库在table1的varchar(255)field1中包含一个32位整数值。

我对所述表的后十个或类似记录感兴趣,该表中的整数小于给定参数值。

运行下一个sql语句几乎可以正常工作:

echo 'select field1 from table1 where field1 < 123456 order by field1;'|mysql

问题在于field1包含类似

123450
123453

选择的答案,还有像

12344
12345

由于所使用的排序顺序和方法(用字符串排序?),它们也符合标准。

当然,问题在于缺少前导零,我对此无能为力。

以纯sql查询方式解决此问题的最佳方法是什么? 由于最终解决方案中的时间限制,我更喜欢每个参数一个查询。

您可以通过将其视为数字来转换该值。 这是一个简单的方法:

select field1
from table1
where field1 + 0 < 123456
order by field1 + 0;

+ 0 “无提示转换”。 如果字符串不是数字,则返回0。转换仅适用于字符串中的前导数字。

通常,最好使用正确的类型。 如果该字段包含非数字值,则可能需要:

where field1 + 0 < 123456 and
      field1 + 0 > 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM