首页 >数据库 >mysql教程 >如何有效地从字符串中去除非数字字符以进行 MySQL 比较?

如何有效地从字符串中去除非数字字符以进行 MySQL 比较?

Linda Hamilton
Linda Hamilton原创
2024-12-06 21:11:16470浏览

How Can I Efficiently Strip Non-Numeric Characters from Strings for MySQL Comparisons?

在 MySQL 字符串比较中剥离非数字字符

在 MySQL 中比较字符串时,通常需要删除可能会导致错误的非数字字符。干扰比赛。要执行此操作,我们不能直接在 MySQL 查询中依赖像 preg_replace 这样的 PHP 函数。

相反,我们可以创建一个自定义 MySQL 函数来从给定字符串中去除非数字字符。下面是一个示例函数:

DROP FUNCTION IF EXISTS STRIP_NON_DIGIT;
DELIMITER $$
CREATE FUNCTION STRIP_NON_DIGIT(input VARCHAR(255))
   RETURNS VARCHAR(255)
BEGIN
   DECLARE output   VARCHAR(255) DEFAULT '';
   DECLARE iterator INT          DEFAULT 1;
   WHILE iterator < (LENGTH(input) + 1) DO
      IF SUBSTRING(input, iterator, 1) IN ( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ) THEN
         SET output = CONCAT(output, SUBSTRING(input, iterator, 1));
      END IF;
      SET iterator = iterator + 1;
   END WHILE;
   RETURN output;
END
$$

此函数接受 VARCHAR 输入并迭代每个字符,检查它是否是数字。如果是,则将该字符附加到输出变量。

使用此函数,我们可以从字符串中删除非数字字符,并使用它与 MySQL 查询中的数值进行比较,如下所示:

SELECT * FROM foo WHERE STRIP_NON_DIGIT(bar) = '12345'

以上是如何有效地从字符串中去除非数字字符以进行 MySQL 比较?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn