問題を見つける今朝、クライアントから電話があり、「シャオ・チェン、昨夜データベースに何十万ものデータをインポートしたのですが、Webインターフェースではほとんど見つかりませんでした。あなたのシステムって一体何なの?バグだらけ!デボデボデ…」(2,000語省略)と言われ、いつものように私たちのプロジェクトがクソだと批判されました~~ はいはい、お客さんが何をスプレーしても構いません、私は朝食として扱います 🙂🙂🙂🙂 ゲップ~ んー、すごくお腹いっぱいです; 会社に到着後、まずはお客様から頂いたエラー例(見つけられなかった)をテストし、昨日のデータに問題がないか確認しました。昨日お客様がExcelで取り込んだデータには\r\nなどの改行や復帰が多く含まれているのが分かりました。 たとえば、データベース内のデータが「line break\nline break\nline break」であり、次の SQL クエリがインターフェイスで使用されている場合、当然ながら見つけることはできません。 `LOL` から * を SELECT * します。name は 'newline newline newline' です。 改行文字: 復帰文字: MySQL では、復帰文字と改行文字はどちらも char 型です。varchar に配置すると、navcat などのプラグインでは表示されません。mysql ターミナルと navcat を比較して確認する必要があります (落とし穴~) navcat プラグインは以下を表示します。 MySQL ターミナルには次のように表示されます。 (改行文字 \r によってデータ結果が直接返され、その一部しか表示されませんでした。MySQL さん、あなたについて何を言えばいいでしょうか? 😰😰) mysql> `LOL` から * を選択します。 +----+------------------------------+-----------+-------+ | id | ヒーロータイトル | ヒーロー名 | 価格 | +----+------------------------------+-----------+-------+ | 1 | DBlade Shadow | タロン | 6300 | | 2 | X-Swift スカウト | ティーモ | 6300 | | 8 | 改行 改行 改行| 改行| 450 | キャリッジリターン | キャリッジリターン | 450 | +----+------------------------------+-----------+-------+ セット内の 4 行 (0.00 秒) 1. 改行と復帰を削除する方法条件が許せば、次のようにステートメントを通じて直接改行文字と復帰文字をクリアすることをお勧めします。 「hero_title」列のすべての改行を削除します (次のいずれかの方法で実行できます)。 -- 「hero_title」列のすべての改行を削除します(次のいずれかの方法で機能します) `LOL` を更新します。hero_title を REPLACE(hero_title, '\n', '') に設定します。 `LOL` を更新します。hero_title を REPLACE(hero_title, char(10), '') に設定します。 – 「hero_title」列からすべての改行を削除します(次のいずれかの方法で実行できます) -- "hero_title" 列からすべての改行を削除します。 update `LOL` set hero_title = REPLACE(hero_title, '\r', ''); `LOL` を更新します。hero_title を REPLACE(hero_title, char(13), '') に設定します。 2. SELECTクエリで「改行と復帰」を無視する方法たとえば、条件が許さない場合、顧客は「非常に興奮して」あなたに向かって「カリーのデータに触れることはできません!」と叫びます。 …笑っちゃった〜 ではどうすればいいのでしょうか? SQL を変更することで改行や復帰を除外できますが、これはクエリの効率にある程度影響し、ご存知のとおり、多くのコードを変更する必要があります。 魯迅氏の言葉を思い出してください。「抑圧があるところには、抵抗がなければならない」 次に例を示します。 -- 改行を無視するクエリ SELECT * from `LOL` where REPLACE(hero_title, char(10), '') = 'line break line break line break'; -- 復帰文字クエリを無視します。SELECT * from `LOL` where REPLACE(hero_title, char(13), '') = '復帰文字 復帰文字 復帰文字'; -- 改行と復帰は無視します。SELECT * from `LOL` where REPLACE(REPLACE(hero_title, char(13), ''), char(10), '') = '復帰 復帰 復帰 復帰'; 3. 体験のまとめ同様のシンボルは、通常、データベースに入力するときに消去する必要があります。保持する必要がある場合は、他のカスタム識別子 (自分で作成した一意の識別子など。私はこれを「大きな目が小さな目を睨む: o_O」と呼んでいます) に置き換え、インデックス作成の効率に影響を与えないようにバックグラウンド プログラムで置き換えを行うことをお勧めします。 さて、この記事がお役に立てば幸いです。同僚がこの問題に遭遇したときに、この記事をマークして同僚の顔に突きつけてみてはいかがでしょうか。 これで、MySQL データ内の改行や復帰が多い問題を解決する方法についての記事は終了です。MySQL の改行や復帰の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Excel エクスポートは docker 環境では常に失敗する
>>: Vue3.0 でページング コンポーネントを手動でカプセル化する方法
0 アイコンと画像の違いアイコンは文字であり、画像はバイナリ ストリームです。つまり、画像はアイコン...
目次react-nativeプロジェクトの初期化react-nativeプロジェクトをインストールす...
「キャンセル」ボタンは必要な操作プロセスの一部ではなく、デザイン上の主要な要素として表示されません...
Ubuntu は、Linux をベースにした無料のオープンソース デスクトップ PC オペレーティン...
ModSecurity は、Web サーバーに入るすべてのパケットをチェックする強力なパケット フィ...
この記事では、Element-uiを使用してメニューナビゲーションを実装するVueの具体的なコードを...
フレックスレイアウト定義: Flexレイアウトの要素は、 Flex 、または略して「コンテナー」と呼...
目次混合継承の影響: 1. 継承Vue.extend メソッドプロパティを拡張する2. ミックスイ...
目次コンテナデータボリュームとはコンテナ データ ボリュームが必要なのはなぜですか?使用データボリュ...
この記事は主にSQLシリアル番号取得コード例を紹介します。記事ではサンプルコードを詳細に紹介しており...
目次序文異なるコンピュータ上の 2 つの Node.js プロセス間の通信TCPソケットの使用HTT...
前提複雑なシナリオでは、複数の異なるページ間で大量のデータを使用したり変更したりする必要があります。...
この記事では、階段スライド効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具...
最も一般的で、最もよく使用され、最も一般的な方法は、submit タイプを使用することです。コードを...
1. データを初期化する `test_01` が存在する場合はテーブルを削除します。 テーブル「te...