none
中黒 '•' の置換 RRS feed

  • 質問

  • nvarchar型の列に、下記のような中黒'•'が先頭についたデータがあり、半角中黒を取りたいのですが、
    --
    ItemName
    •あああ
    --
    下記等を試しても、中黒がついたまま取得されてしまいます。
    --
    SELECT REPLACE(ItemName,'•' COLLATE Cyrillic_General_BIN,'')
    FROM テーブル名
    --

    ・ABBYY Flexicapture (OCRソフト)からエクスポートしたデータです。
    ・文字コードを調べてみたところ、キリル言語 (DOS) - cp866の可能性があるようなので、
    Cyrillic_General_BINとしたのですがreplaceできず、ロケールは他も全て試してみたのですが結果は変わりませんでした。

    他に方法がありましたらご教示いただけないでしょうか。
    宜しくお願いいたします。


    • 編集済み giiino 2019年7月26日 14:00
    2019年7月26日 11:33

すべての返信

  • 下記等を試しても、半角中黒がついたまま取得されてしまいます。

    相手が NVARCHAR 型なのですから、'•' ではなく、N'•' を REPLACE しないと駄目でしょう。


    Cyrillic_General_BINとしたのですが

    そもそも  Cyrillic_General_BIN だと、'•' も 'あ' も扱えないです。NVARCHAR で揃えましょう。

    nvarchar型の列に、下記のような半角中黒'•'が先頭についたデータがあり、
    -- 0x00002022 が得られている?
    SELECT CONVERT(varchar, CAST(UNICODE(N'•') AS varbinary), 1)
    -- SELECT CONVERT(varchar, CAST(ItemName AS VARBINARY), 1) FROM [テーブル名]

    U+2022 なら定義上は Ambiguous なので、必ずしも半角とは言えなかったりします。


    U+00B7 'MIDDLE DOT'「·」Ambiguous 
    U+0387 'GREEK ANO TELEIA'「·」Narrow
    U+2022 'BULLET'「•」Ambiguous ← 今回のはコレ?
    U+2219 'BULLET OPERATOR'「∙」Narrow
    U+22C5 'DOT OPERATOR'「⋅」Narrow
    U+30FB 'KATAKANA MIDDLE DOT'「・」Wide
    U+FF65 'HALFWIDTH KATAKANA MIDDLE DOT'「・」Halfwidth
    


    • 回答の候補に設定 SurferOnWww 2019年7月26日 22:13
    2019年7月26日 12:36
  • N'•' で無事除去できました。
    (頂いたSQLを実行したところ、ご記載の通り'BULLET'  0x2220 UCS-2 Hexadecimal でした)

    初歩的な誤りにも関わらず、丁寧にご説明頂きとても助かりました。
    ありがとうございます。
    2019年7月26日 13:59
  • giiinoさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    本件、魔界の仮面弁士さんより参考になる投稿が寄せられたようでなによりです。

    [回答としてマーク]機能は設定された投稿が後から参照しやすくなりますので、
    同じ問題でお困りの方のためにも参考になった投稿に設定いただけますと幸いです。

    お手数ですが、ご協力の程どうかよろしくお願いいたします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年7月31日 0:40
    モデレータ