簡體   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