1 つのフィールドを持つ空のテーブルを作成し、いくつかの数値データをインポートしました。TEXT フィールドとして選択したvalue1という名前のフィールド。(データの長さ/範囲、またはデータに迷子のアルファ文字があるかどうかなどがわからないため、一時的にそうしました。)
ここで、PROCEDURE ANALYZE() をクリーンアップすると、value1はCHAR(6)フィールドである必要があることがわかります。フィールドは数値で、英字はありません。MIN 値は 1、MAX 値は 9999、MIN の長さは 1、MAX の長さは 6 です。値、つまり 000123。それが問題だった場合に備えて、いくつかの SQL でクリーンアップしました。
UPDATE table1 SET value1=TRIM(LEADING '0' FROM value1)
だから今、すべてがうまく見え、正規表現検索はアルファ文字などを表示しません。しかし、PROCEDURE ANALYZE() は、value1が CHAR(5) フィールドである必要があることを示しています。空のフィールドはありません。文字セットがラテンだったので、ALTER TABLE table1 CONVERT TO CHARACTER SET utf8を試してみました。変化なし。
ここで私が見逃している、または理解していない可能性があることを誰かが知っていますか? SMALLINTなどを使用するように言わないのはなぜですか?
Mysql 5.6、InnoDB テーブル、utf8。