首頁 >資料庫 >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