Php 如何在MySQL中只查询字符串中的数字
我有一个MySQL查询,需要输入一个包含邮政编码的字段。不幸的是,有些人也在ZIP字段中输入城市名称或郊区。我正在寻找一个只返回字段中的数字的查询代码。除了以下代码外,我在stackoverflow producec错误中已经找到的任何代码: 但是,此代码只删除任何字母数字字符。删除所有a、b、c字符的正确代码是什么 谢谢你的帮助 更新:Syed Noman发布的代码在phpmyadmin中为我工作 然而,当我在php代码中将其添加到我的查询中时,我得到了一个解析错误 下面是产生错误的代码Php 如何在MySQL中只查询字符串中的数字,php,mysql,Php,Mysql,我有一个MySQL查询,需要输入一个包含邮政编码的字段。不幸的是,有些人也在ZIP字段中输入城市名称或郊区。我正在寻找一个只返回字段中的数字的查询代码。除了以下代码外,我在stackoverflow producec错误中已经找到的任何代码: 但是,此代码只删除任何字母数字字符。删除所有a、b、c字符的正确代码是什么 谢谢你的帮助 更新:Syed Noman发布的代码在phpmyadmin中为我工作 然而,当我在php代码中将其添加到我的查询中时,我得到了一个解析错误 下面是产生错误的代码 $q
$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 ";
该错误表示最后一个“;”出现问题。使用REGEXP仅获取数字
SELECT *
FROM your_table
WHERE zipcode REGEXP '^[0-9]+$';
或
希望能有所帮助
预期产量
zipcode列包含
123
145adb
adds142
157
237
输出将是
123
157
237
我想你需要一个用户定义的函数来实现这一点,因为开箱即用。我还没有尝试过,但是你在你链接的问题中看到了公认的答案吗?这可能适合您。为什么不在运行查询之前使用PHP从字符串中删除数字?
123
157
237