2016-07-27 19 views
1

我有一個MySQL查詢,需要詢問包含郵政編碼的字段。不幸的是,一些人也輸入城市名稱或郊區到ZIP領域。我正在尋找一個查詢代碼,它只會返回字段中的數字。除了以下內容,我已經在stackoverflow上找到的任何代碼對我來說都會產生錯誤:How to remove all non-alpha numeric characters from a string?如何僅查詢MySQL中字符串的數字

但是,此代碼只會刪除任何字母數字字符。什麼是正確的代碼也刪除所有a,b,c字符。

謝謝你幫

UPDATE:張貼由賽義德·諾曼的代碼對我的作品在phpMyAdmin。

但是,當我將這添加到我的查詢在我的PHP代碼中時,我得到一個解析錯誤。

這裏是產生錯誤的代碼。

$query = "DROP FUNCTION IF EXISTS digits; 
DELIMITER | 
CREATE FUNCTION digits(str CHAR(32)) RETURNS CHAR(32) 
BEGIN 
    DECLARE i, len SMALLINT DEFAULT 1; 
    DECLARE ret CHAR(32) DEFAULT ''; 
    DECLARE c CHAR(1); 

    IF str IS NULL 
    THEN 
RETURN ""; 
END IF; 

SET len = CHAR_LENGTH(str); 
REPEAT 
    BEGIN 
    SET c = MID(str, i, 1); 
    IF c BETWEEN '0' AND '9' THEN 
    SET ret=CONCAT(ret,c); 
    END IF; 
    SET i = i + 1; 
END; 
UNTIL i > len END REPEAT; 
RETURN ret; 
END | 
DELIMITER ; 

SELECT digits(`asdf`) FROM `12345` WHERE 1 "; 

該錯誤表示最後一個「;」的問題。

+0

我想你會需要一個用戶定義的函數,因爲[MySQL不支持正則表達式替換](http://stackoverflow.com/questions/986826/how-to-do-a-regular-表達式替換在mysql中)開箱即用。 –

+0

還沒有嘗試過,但你見過[dotancohen的評論](http://stackoverflow.com/questions/6942973/mysql-how-to-remove-all-non-alpha-numeric-characters-from-a-字符串#comment39620969_22903586)在你連接的SO問題中的接受答案?這可能對你有用。 – roberto06

+0

在運行查詢之前,爲什麼不使用PHP去除字符串中的數字? – romellem

回答

2

爲只得到數字

SELECT * 
FROM your_table 
WHERE zipcode REGEXP '^[0-9]+$'; 

SELECT * 
FROM your_table 
WHERE zipcode > 0 

使用REGEXP希望這將有助於 預期輸出 你的郵政編碼列包含

123 
145adb 
adds142 
157 
237 

輸出將

123 
157 
237 
相關問題