2

ファイルで cat -v を実行しました。ある種の空白が表示されると予想していた ^K を参照してください。ただし、そのコードを MySQL で文字を見つけて置き換えるために使用できるものに変換する方法がわかりません。

コンテキスト: 最後に改行があるように見える mysql フィールドがあります。クエリを実行すると、出力が折り返されます。

    t_unid_contact を選択
    , concat('"',t_phone,'"')
    、t_phone
    contacts_jun_2013 より
    ここで、T_UNID_Contact = 'CN726181';

    +------------+-----------------------------+------ -------+
    | | t_unid_contact | concat('"',t_phone,'"') | t_phone |
    +------------+-----------------------------+------ -------+
    | | CN726181 | "4155551212
                                  」 | 4155551212
                                                           | |
    +------------+-----------------------------+------ -------+
    セットで 1 行 (0.00 秒)

これらのWHERE句を試して、隠し文字のある行を識別しようとしましたが、結果が得られませんでした:

    どこで t_phone like '%\n%'
    '%\r%' のような t_phone
    どこで t_phone like '%\r\n%'
    '%\k%' のような t_phone
    どこで t_phone regexp '[\r]'
    どこで t_phone regexp '[\k]'
    where t_phone regexp '[\n]'
    where t_phone regexp '[\r\n]'

問題のある行をcsvに出力し、これを実行して確認しました。出力は次のとおりです。

    cat -v testwhitespace.csv
    "CN726181","4155551212^K"

replace() を使用してそれを取り除くことができるように、テーブル内のその空白文字を特定する方法を知っている人はいますか?

ありがとう

4

2 に答える 2

1

^K垂直/行集計文字U+000Bの制御コードです。

REPLACE(my_column, _utf8 x'0b', '')
于 2013-07-24T20:40:50.693 に答える
0

質問に答えると、前述のように ^K は垂直タブです。As ^k == 11 番目の文字 == 16 進数の b

あなたはファイルを見ていると述べています。

sed -e 's/\x0b/ /g' ファイル

スペースのためにそれらを取り除く必要があります。

SQL を使用する場合は、where 句で \x0b を試してください。

于 2013-07-24T20:53:40.947 に答える