« VistaでWindows Mdia エンコーダを使う | トップページ | ASP.NETでエクセル操作 その1 »

2008/08/11

文字列から全角スペースを削除する

環境:Microsoft SQL Server 2005

 

SQLサーバに格納された全角スペースの入った文字列から全角スペースを削除する方法。全角スペースの位置に関わらず、全て削除する場合は、REPLACE関数で削除できます。※□は全角スペース

 

SELECT REPLACE('□全角スペース□の入った文字列□□□', '□', '')

 

全角スペースの入った文字列から右側のスペースだけ、または左側のスペースだけを削除するにはちょっと工夫が必要です。

半角スペースであれば、LTRIM/RTRIM関数で目的の操作ができますが、全角スペースではトリミングされません。そこで、REPLACE関数と組み合わせて処理を行います。

 

SELECT REPLACE(RTRIM(REPLACE('□全角スペース□の入った文字列□□', '□', ' ')), ' ', '□')

 

一見複雑ですが、手順としては下記の通りです。

 

    1. 一度全角スペースを半角スペースにREPLACEする。

 

    1. LTRIM/RTRIM関数で、トリミング

 

  1. 半角スペースを全角スペースにREPLACEする

« VistaでWindows Mdia エンコーダを使う | トップページ | ASP.NETでエクセル操作 その1 »

05 database」カテゴリの記事

コメント

副作用さんのご指摘は、最後の3.半角スペースを全角スペースにREPLACEすることで回避できるつもりでいましたが、何か気づいていない問題が残っているのかな?わからないので教えて欲しいです。

会社員さんのご指摘は、その通りですね。
文字列内には2バイト文字しか入力されていないという前提条件が必要ですね。
文字列内の半角スペースを許容する場合は、事前に半角スペースを何らかの文字列にREPLACEした上で上記の処理をする必要がありますね。

しかも、元々の文字列中の半角スペースも全角にされてしまいますね・・・

一見よさそうに見えるけど
「  あいうえお かきくけこ   」
のように文章中に全角がある場合は、トリミングだけじゃなくて「全角空白が半角にされる」という副作用も発生するから、使用には注意が必要だね。

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: 文字列から全角スペースを削除する:

« VistaでWindows Mdia エンコーダを使う | トップページ | ASP.NETでエクセル操作 その1 »

2020年9月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
無料ブログはココログ