SQLSERVERで全角半角変換するストアド(C#なDLLを使用)

2020年2月16日日曜日

シリーズ目次

前置き

今回は、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」の部分は、スカラー関数を作成したいデータベース名を書いてください。

DLLの用意

VisualStudioの「新しいプロジェクトの作成」を開いて、「クラスライブラリ(.Net Framework)」を選択してください。(.Net Standard)ではないので注意。








プロジェクトを作成したら、参照で「Microsoft.VisualBasic」が参照されていることを確認してください。
下記のようにコーディング。
ビルドしてDLLを作成します。

DLLの登録、スカラー関数の作成

作成したDLLをアセンブリ→スカラー関数としてSQLSERVERに登録。

成功するとこんな感じで登録されます。









実行例

試しに実行してみます。
「アイウエオカキクケコ!![[」というレコードを変換します。







変換前
アイウエオカキクケコ!![[

変換後
アイウエオカキクケコ!![[

完璧に変換されていますね!!
SQLSERVERだけで実装できなくなるのが辛いところですが、この方法ならば、SQLSERVERではカバーできていないいろいろな関数を組み込むことが可能です。

次回