MySQL: 比較のために数値以外の文字を削除する
MySQL では、ユーザーが入力した特定の数値に基づいてレコードをフィルタリングできます。データベースに保存されている数値が、不要な非数値文字によって異なる場合でも同様です。これを実現するには、次のアプローチの使用を検討してください。
以下に示す STRIP_NON_DIGIT 関数は、入力文字列から数字以外の文字を削除し、数値を直接比較できるようにします。
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 $$
この関数を使用すると、 、次のようにレコードをフィルタリングできます:
SELECT * FROM foo WHERE STRIP_NON_DIGIT(bar) = '12345'
このクエリは、「bar」列に数値が含まれるレコードを取得します。データベースに保存されている値に「123zz4-5」などの数字以外の文字が含まれている場合でも、「12345」と一致します。
以上がMySQL で数値以外の文字がある場合でも数値を比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。