2012-03-09 89 views
1

我有這個簡單的查詢,並想知道是否有可能只提取信息,其中arc僅等於數字而不是文本。有沒有辦法查詢mysql,只能得到數字結果?

代碼:

$sql = mysql_query("SELECT * FROM `comics` ORDER BY `id` DESC LIMIT 20"); 
+1

是什麼'arc'?表中的一個字段?你爲什麼只需要數字? – 2012-03-09 19:29:38

+0

是弧是一個字段,我只需要數字,因爲有一個處理的順序,如果弧不是一個數字,那麼它不準備好處理。 – rackemup420 2012-03-09 19:32:47

回答

7

據我所知,沒有 「則IsNumeric()」 中的MySQL函數。

你可以,但是,使用正則表達式:

How do I check to see if a value is an integer in MySQL?

我假設你要檢查的字符串值。一種好的方法是使用REGEXP運算符 ,將字符串與正則表達式匹配。只要 做

select field from table where field REGEXP '^-?[0-9]+$'; 

這是相當快的。如果你的領域是數字,只是測試

ceil(field) = field 

同理:

http://forums.mysql.com/read.php?60,1907,38488

+0

ty像一個魅力工作! – rackemup420 2012-03-09 19:31:46

+0

'ceil(field)= field'示例測試以查看浮點列中的值是否爲整數。 – 2012-03-09 19:45:23

0

對於學術目的,我提供的隱式轉換的情況下。當執行數學函數時,MySQL將嘗試將字符串轉換爲整數,如果失敗則返回0。

所以......

SELECT 1 * '1' 

返回: 1

SELECT 1 * 'hello' 

返回 0

所以,如果0是不是在你的領域的有效數字,你可以簡單地做

SELECT * FROM comics WHERE arc * 1 > 0