如何仅查询MySQL

时间:2016-07-27 14:06:39

标签: php mysql

我有一个MySQL查询,需要询问包含邮政编码的字段。不幸的是,有些人还将城市名称或郊区输入ZIP字段。我正在寻找一个只返回字段中数字的查询代码。除了以下内容之外,我在stackoverflow上找到的任何代码都会产生错误:How to remove all non-alpha numeric characters from a string?

但此代码仅删除不包含字母数字的字符。什么是正确的代码,也删除所有的a,b,c字符。

感谢您的帮助

更新:Syed Noman发布的代码在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 ";

错误表示最后一个“;”

出现问题

1 个答案:

答案 0 :(得分:2)

USE REGEXP仅获取数字

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

SELECT * 
FROM your_table 
WHERE zipcode > 0

希望它会有所帮助 预期产出 您的邮政编码栏包含

123
145adb
adds142
157
237

输出

123
157
237