2016-07-27 24 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 
相关问题