シリーズ目次
前置き
今回は、SQLSERVERで全角半角変換するストアド(C#なDLLを使用)を紹介します!SQLを採用するどのRDBMSでも、半角カタカナ→全角カタカナの変換はなかなかサポートされていません(Oracleだとできるみたい)。
まともにストアドを書くと、1文字ずつ見て変換するような形になります。
しかし一方、VisualBasicには全角半角変換できる「StrConv」があります。
これを使えるようにできればかなり便利なのでは!?
今回はC#で書いたStrConvをDLLにして、それをSQLCLRという機能を有効化することでSQLSERVERに登録、スカラー関数化してみます!
MSDN的にはこちらを御覧ください。
CLR 関数の作成
clr enabled サーバー構成オプション
準備
- SQLCLRの有効化
- DLLの用意
- DLLの登録、スカラー関数の作成
- 実行
SQLCLRの有効化
SQLSERVERで下記ストアドを実行します。
「data_convert_to」の部分は、スカラー関数を作成したいデータベース名を書いてください。
プロジェクトを作成したら、参照で「Microsoft.VisualBasic」が参照されていることを確認してください。
下記のようにコーディング。
ビルドしてDLLを作成します。
成功するとこんな感じで登録されます。
DLLの用意
VisualStudioの「新しいプロジェクトの作成」を開いて、「クラスライブラリ(.Net Framework)」を選択してください。(.Net Standard)ではないので注意。プロジェクトを作成したら、参照で「Microsoft.VisualBasic」が参照されていることを確認してください。
下記のようにコーディング。
ビルドしてDLLを作成します。
DLLの登録、スカラー関数の作成
作成したDLLをアセンブリ→スカラー関数としてSQLSERVERに登録。実行例
試しに実行してみます。「アイウエオカキクケコ!![[」というレコードを変換します。
変換前
アイウエオカキクケコ!![[
→
変換後
アイウエオカキクケコ!![[
完璧に変換されていますね!!
SQLSERVERだけで実装できなくなるのが辛いところですが、この方法ならば、SQLSERVERではカバーできていないいろいろな関数を組み込むことが可能です。
0 件のコメント:
コメントを投稿