我有一个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 ";
错误表示最后一个“;”
出现问题答案 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