mysql では、REGEXP 演算子を正規表現 "[^0-9.]" と組み合わせて使用して、データが数値かどうかを判断できます。構文は "field REGEXP '[^0- 9.]'" ; ステートメントの結果が「1」の場合、数値以外のデータをフィルタリングできます。ステートメントの結果が「0」の場合、値が数値のデータをフィルタリングできます。
このチュートリアルの動作環境: Windows10 システム、mysql8.0.22 バージョン、Dell G3 コンピューター。
ほとんどの数値は int または bigint で格納されますが、一部のフィールドでは数値の格納に文字列が使用されるため、文字列形式がすべて数値の場合、この問題が発生します。
それでは、どうやって判断すればいいのでしょうか?
方法
mysqlのREGEXP演算子を使用します
{String} REGEXP '[^0-9.]'
最初の文字列は判断する必要があるもので、次の文字列はmysqlの正規表現です。数字や小数点ではない文字と一致します。
文字列に 0 ~ 9 以外の数値または小数点が含まれている場合は true を返し、それ以外の場合は false を返します。
使用法
select ('123a' REGEXP '[^0-9.]');
--「123a」には文字「a」が含まれており、出力結果は1、mysqlの定数trueの出力は1、出力はfalse の値は 0
select * from tablename where (name REGEXP '[^0-9.]') = 1
名前がすべて数字であるクエリ レコード
注: 文字列にスペースが含まれている場合、正規表現も照合され、1 が返されます。両端のスペースを削除したい場合は、判定対象の文字列に対してtrim()関数を使用する必要があります。
#速度列が数値ではないデータをクエリする
select * from standard_csbi_service_tree_1d_full where (‘2134’ REGEXP ‘[^0-9.]’)=1;
#速度列が数値であるデータをクエリする
select * from standard_csbi_service_tree_1d_full where (speed REGEXP ‘[^0-9.]’)=0;
推奨学習: mysql ビデオ チュートリアル#
以上がmysql が数値かどうかを判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。