
SQL Serverでの検索について教えてください。
【目的】
・JAVAで作成した検索画面より、SQLServerのテーブルに対して検索をしたい。
・フリガナ検索で、以下のルールを設けたい
(1)カタカナ小文字(『ッ』『ャ』等)とカタカナ大文字(それぞれ、『ツ』『ヤ』)を区別せず、同一視したい
(2)濁音(『バ』)・破裂音(『パ』)・清音(『ハ』)を区別せず、同一視したい
(3)半角スペースと全角スペースを無視したい
(4)アルファベット小文字(『a』等)とアルファベット大文字(『A』)を区別せず、同一視した
≪例≫
Aテーブル/フリガナ : ケンサク キョウダイ
検索ワード
・ケンサク キョウダイ(完全一致) ・・・ ○
・ケンサク キヨウダイ(上記(1)) ・・・ ○
・ケンサク キョウタイ(上記(2)) ・・・ ○
・ケンサクキョウダイ(上記(3)) ・・・ ○
という結果にしたい。
【現時点】
・照合順序をSQL文でしようしたら、
(2)は『AI』で対応できました。
(4)は『CI』で対応できました。
・(3)はSQL文のWhere句に、半角スペースを無効にする『Replace』と全角スペースを無効にする『Replace』を記述することで対応できました。
・(1)だけがどうしても対応できません。
→(3)の対応と同様に『Replace』での対応も可能なのですが、9つ程度(『ッ』『ャ』『ュ』『ョ』『ァ』『ィ』『ゥ』『ェ』『ォ』)追加しないといけないので、処理速度の低下が懸念点です。
どなたかいい方法をお持ちの方がいましたら、ご協力お願いいたします。
■バージョン:10.50.1600.1
以上
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
元のAテーブルに(1)~(4)の細工を施した「検索用フリガナ」と「元のフリガナ」の2つを持てば良いでしょう。
Aテーブル/元のフリガナ,検索用フリガナ
------------------------------------------
ケンサク キョウタイ,ケンサクキヨウタイ
ケンサク キョウダイ,ケンサクキヨウタイ
ケンサク シマイ,ケンサクシマイ
ケンサク オヤジ,ケンサクオヤシ
で、検索文字に対しても(1)~(4)の処理を行ってから、検索用フリガナでWHEREをかけます。
この時、Replaceなどの小細工は一切要りません。「完全一致」で構いません。
上の例で、検索文字に「ケンサ クキョウ ダイ」を指定すると、検索文字に(1)~(4)の変更が加えられ「ケンサクキヨウタイ」で検索しに行きます。
WHERE [Aテーブル].[検索用フリガナ] = 細工した文字列
になっているので、SQL文で出てくるのは
Aテーブル/元のフリガナ,検索用フリガナ
------------------------------------------
ケンサク キョウタイ,ケンサクキヨウタイ
ケンサク キョウダイ,ケンサクキヨウタイ
の2レコードです。
>処理速度の低下が懸念点です。
「検索を行おうとした時にどうにかしようとする」から、処理速度が落ちるのです。
テーブルにレコードを追加する時や、レコードの更新時に「どうにかしてある項目」を作ってしまえば、あとは、「どうにかしてある項目」と「どうにかしてある検索文字」を完全一致で単純検索するだけです。
chie65535様
ご協力ありがとうございます。
テーブルに検索用フリガナを追加する案も検討していました。
影響範囲が広がるので設定・SQLで対応が出来ない場合の案として考えていましたが、
安心できる案だと再認識しました。
他の案と安心面も念頭に入れて検討してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- Visual Basic(VBA) 指定した文字から指定した文字のスペースまでを削除するVBAの構文について 6 2022/07/24 22:20
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Access(アクセス) Access VBAで条件を追加する(書き込む)場所 2 2022/03/23 12:05
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
Accessでvlookupみたいなことは...
-
SQLで条件指定結合をしたいがNU...
-
ACCESSのSQLで数値型に変換する...
-
3つの表を1つに縦に連結する
-
Accessでテーブルからテーブル...
-
ACCESS97のテーブルサイズについて
-
SQLで日付を条件に削除したい
-
Accessクエリでの、LIKE条件
-
テーブルを、たとえそれが存在...
-
リンクテーブルを CopyObject ...
-
Accessのクエリで半角円マーク...
-
ACCESSに同時アクセス(編集)を...
-
Accessレコードの追加や変更が...
-
access テーブル内のレコード...
-
本テーブルに変更内容を反映す...
-
テーブル作成クエリで主キーを設定
-
パススルークエリをテーブル作...
-
AccessでのNULLのレコードの表...
-
Accessでテーブルにパスワード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
Accessでテーブルからテーブル...
-
Accessレコードの追加や変更が...
-
Accessでvlookupみたいなことは...
-
ACCESSのSQLで数値型に変換する...
-
デザインビューで、連結式 を...
-
Accessクエリでの、LIKE条件
-
2つのテーブルを比較して一致し...
-
access テーブル内のレコード...
-
テーブル作成クエリで主キーを設定
-
SQLで条件指定結合をしたいがNU...
-
3つの表を1つに縦に連結する
-
ACCESSに同時アクセス(編集)を...
-
Accessの追加クエリで既存のテ...
-
ファイルメーカ 検索実行せず...
-
リンクテーブルを CopyObject ...
-
DAOのTableDefs("TblName").Con...
-
INSERT時にデータ登録とmaxの発...
-
ODBCで接続するとDBに変更/追加...
-
SQLで日付を条件に削除したい
おすすめ情報