記載内容について
OutSystemsのSQLウィジェットで日本語検索を実装する方法を実装例とともに紹介していきます。
結論になってしまいますが、今回使用する対処法は「Nプレフィックス」というもので検索文字列の頭に”N”をつけてあげると言ったものになります。詳しい内容は下記リンクから公式ドキュメントをお読みいただければと思います。理解し切ったわけではないですが簡単にいうと文字列の先頭にNをつけることで「この文字列はUnicodeです!」と明示的に指定するそうです。
https://learn.microsoft.com/ja-jp/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=sql-server-ver16
では早速実装例を見ていきましょう。
挙動確認
実際に使った際の挙動を確認していきます。
それぞれの検索が簡単にできるアプリを作成し動かしてみた画像を添付いたします。
・N無しの場合

・Nありの場合

同じキーワードにもかかわらず検索結果が異なる状況になっております。
挙動が分かったところで実装部分について触れていきたいと思います。
Nプレフィックスの使用方法
では早速ですが前章で紹介したアプリの実装部分を確認していきましょう。
使用したSQLウィジェット自体は受け取ったKeyWordを使用して検索をするシンプルな構造です。

Test Inputを使用して確認していきます。
N無しの場合
Test Valueに「”‘%ま%'”」を設定(画像1枚目)して実行すると検索結果は0件になってしまっています。(画像2枚目)SQLの実行結果(画像3枚目)をみても文字化けとかないように見えるのですが上手くいっていないことがわかります。



Nありの場合
今度はTest Valueに「”N‘%ま%'”」を設定(画像1枚目)して実行すると検索結果は12件になりました。(画像2枚目)SQLの実行結果(画像3枚目)をみるとさっきと違いNがついています。



頭にNがついただけですが日本語検索ができるようになりました。
終わりに
気づけば1ヶ月以上空いていて久しぶりの更新となってしまいました。時の流れの速さに驚いている今日この頃です。
しかしたったNがつくだけで結果が変わるなんてとても面白いですよね。
初めてこの事象にぶつかった時に実行されたSQLをみても特におかしいところがないので気付けずかなりの時間を取られてしまいました。同じような状況に陥る方が少しでも減れば嬉しいなと思いながら今回の投稿を終わろうと思います。


コメント