[英]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.