私は最近、ある大きなテーブル (約 20 GB) から別のテーブルにデータをコピーするスクリプトを実行しましたが、そこでめちゃくちゃになり、datetime 列 ( と呼ばれるtimestamp) の列値が varchar データ型 ( と呼ばれるcategory_name) の別の列に保存されましたが、値は、ランダムな日時値 ( 、 、 など) に設定されているか、その範囲を持っていますtimestamp。コピーしたテーブルも新しいデータを取得し続けます。ただし、新しいデータは破損していません。適切なデータが始まる行の正確な ID を特定しようとしています。有効な値の列は、アルファベット値または. 次のクエリを試しました-NULL0000-00-00 00:00:000003-02-01 00:00:001990-12-00 00:00:00category_nameNULL
SELECT * FROM table_name
WHERE `timestamp` IS NOT NULL
AND `timestamp` != "0000-00-00 00:00:00"
ORDER BY id;
timestampこれは、すべての種類の値が列に保存されていることを発見したときです。
次にやってみた
SELECT * FROM table_name WHERE category_name REGEXP '[^a-zA-Z]' LIMIT 10;
これは機能しません。
SELECT * FROM table_name WHERE category_name REGEXP '[:alpha:]' LIMIT 10;
どちらも機能しません。
どんな助けでも本当に感謝します、ありがとう。category_name日時文字列ではなく、列が有効なデータを取得し始めた場所から、ID/行のおおよその範囲を取得しようとしています。