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