- - PR -
SQLで文字列変換(半角カナ→全角カナなど)
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-11-21 20:29
はじめまして、SQLServer初心者です。
今回、データの移行作業をするにあたって データのクリーニングが必要になったのですが、 SQLサーバに不慣れなことと、私自身の力不足のためなかなか解決しません。 また、周りに聞ける人もいなく、苦慮しています。 【作業】 SQLServerでSQLによるデータ抽出の際に 変換文字列で指定された文字変換を行う。 【環境】 OS:WindowsNT4.0 DB:SQLServer6.5 【変換文字列】 半角カナ → 全角カナ 改行/タブ → 全角空白 どこかにサンプルなどあればよいのですが、 なかなか見つけることができず。。。 また、Oracleのほうは分かったのですが、 SQLServerで同じ作業を行うには、どうすればよいのかよく分かりません。 どうぞよろしくご教授願います。 [ メッセージ編集済み 編集者: にゃんぱん 編集日時 2005-11-21 20:40 ] [ メッセージ編集済み 編集者: にゃんぱん 編集日時 2005-11-23 22:57 ] [ メッセージ編集済み 編集者: にゃんぱん 編集日時 2005-11-23 22:58 ] | ||||
|
投稿日時: 2005-11-24 10:38
こんにちは、でっちです。
これは特定列だけ変換できれば良いのでしょうか? それとも、抽出される全項目だったりするのでしょうか? 前者であればReplace関数が使えると思いますが... Oracleでの対応操作を詳しく書いて頂けますか? そちらの方がイメージが掴みやすいと思います。 | ||||
|
投稿日時: 2005-11-24 17:12
ありがとうございます。
特定列だけ変換できれば良いですが、 Replace関数がSQLServer6.5では使えない(?)ようで困っています。 EnterprizeManagerのHELPなどで検索してみたのですが、 文字列関数内に、Replaceの記述が見つかりませんでした。 SQLServer6.5でも、Replace関数は使用可能なのでしょうか? | ||||
|
投稿日時: 2005-11-24 20:19
でっちです。
6.5ですか。 今手元には古いものでは6.0のTransact-SQLのリファレンスしかないのですが、確かにReplaceはありませんね。 置換対象文字のデータ内での出現回数が1回以下であればCharIndexとSubstringやStuffを組み合わせることで代替可能でしょうが、2回以上であれば難しいように思われます。 ちょっと話題が反れてしまうかもしれませんが、
この部分と文字置換の繋がりが良く分りません。 ひょっとして既存データは書き換えてしまって良いのでしょうか? もしそうであれば、AccessとODBC接続すれば、AccessのクエリとしてReplaceが使用可能なのですが... もしくは、移行作業をAccess経由にしてしまうとか... | ||||
|
投稿日時: 2005-11-24 21:03
お世話になります。
移行元データは、氏名カナやコメント(メモ書き)を フリーフォーマットで登録していて、 半角カナ文字や改行、タブなどが混在しています。 そのため、出現回数も複数回が想定されています。 また、移行先は半角カナ等を許しておらず 移行元から移行先へ移す際に半角カナ→全角カナへ変換が必要となります。 それと、既存データを置き換えるのではなく 一旦ワークテーブルなどにデータを抽出するのですが、 その抽出の際に、文字の置き換えを行って 移行対象データとして出力する予定です。 また、CSV形式で出力して移行先へ渡すため、 改行などが混在するとフォーマットが崩れると思われるため こちらも変換が必要となっています。 あと、データ件数などにもよるのでしょうが、 ACCESSでは処理時間に心配が残ります。 (私がACCESSについて詳しくないだけかもしれませんが・・・。) | ||||
|
投稿日時: 2005-11-24 21:45
でっちです。
Access君もそうそう捨てたものでもないですよ ![]() ちょっと実験してみましたが、それ程能力の高くない私の端末でも 40万件のReplaceによる更新を20秒程度で処理してくれましたから。 とりあえず、最終手段として 1.Accessにインポート 2.Replaceでデータの置き換え 3.ワークテーブルへの書き込み or CSV出力 と言う手順も頭に置いておいて下さい。 とりあえずこれ以上は思いつかないので、私は引っ込みます。 あまりお役に立てず申し訳ないです。m(_ _)m | ||||
|
投稿日時: 2005-11-24 22:32
でっちさん、ありがとうございました!
ACCESSというアイデアは 私では出すことができなかったと思います。 また、ご自身の環境で実験までして頂き 大変感謝しております。 貴重なご意見、本当にありがとうございました。m( __)m | ||||
|
投稿日時: 2005-11-25 10:28
単に変換するだけなら秀丸できますね
全て選択して、半角カナを全角カナに変換して \n|\t を全角空白に置換 サイズの大きいテキストファイルを扱う時は、秀丸がオススメです [ メッセージ編集済み 編集者: 明智重蔵 編集日時 2005-11-25 11:35 ] |