在 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中文网其他相关文章!