ホームページ >データベース >mysql チュートリアル >MySQL で数値データを数値以外の文字と効率的に比較するにはどうすればよいですか?

MySQL で数値データを数値以外の文字と効率的に比較するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-09 15:03:14771ブラウズ

How to Efficiently Compare Numeric Data with Non-Numeric Characters in MySQL?

比較を容易にするために MySQL の数字以外の文字を削除する

ユーザーからの数値入力に基づいて一致するレコードを見つけるには、以下を考慮する必要があります。データベース値内の数字以外の文字。この記事では、これらの非数値文字を取り除き、正確な比較を容易にする MySQL 関数について説明します。

問題ステートメント

数値以外の文字が散在する可能性があるフィールドを含むテーブルがあるとします。 -数値文字の場合、タスクは、によって入力された特定の数値入力に一致するレコードを検索することです。 user.

MySQL 関数: STRIP_NON_DIGIT

この問題に対処するには、STRIP_NON_DIGIT という 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
$$

働く例

STRIP_NON_DIGIT 関数を使用するには、次のような SQL クエリを実行します。

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

このクエリは、'foo' テーブルからレコードを返します。 ' 数字以外の文字が取り除かれたフィールドは、 user.

利点

この関数は、MySQL データベース内の数値と数値以外の文字を比較する問題に対する直接的かつ効率的な解決策を提供します。複雑な正規表現や PHP 関数の必要がなく、実装が簡単です。

以上がMySQL で数値データを数値以外の文字と効率的に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。