VB2008+Accessでアプリケーションを開発しています。
SQLのLIKE検索では、清音と濁音/半濁音、ひらがなとカタカナ等を区別してくれないのですが、これを区別してくれる方法はないでしょうか?
例:(field1はテキスト型フィールド)
SELECT * FROM tblA WHERE field1 LIKE '%グラス%'
を実行すると、
「クラス」「思いめぐらす」なども検索されてしまいます。
これを、
「サングラス」「グラスワイン」などだけがヒットするようにしたいのです。
ちなみに、MySQLではコチラに回答がありました。
http://oshiete1.goo.ne.jp/qa3918969.html
Accessだけが不可能で、SQLServerやOracleならできるかどうかも知りたいです。どうぞ宜しくお願いします。
No.2ベストアンサー
- 回答日時:
LIKEではないですが、
SELECT Name FROM Table1 WHERE InStr(StrConv(Name,128),StrConv('グラス',128))<>0
で抽出できます。
パフォーマンスについては調べていません。(相当悪いかも)
ご回答ありがとうございます。
望んでいた通りの結果を得ることができました。LIKEの代わりにInStrの戻り値を調べるとは感心しました。また、AccessのStrConv関数に128という引数を与えて、文字コードを揃えたうえで比較するところも素晴らしいです。
パフォーマンスですが、試しにAccessにJDBC接続して、SQL Developerで計測してみたところ、普通のLIKE検索と比較して約3倍の時間を要しましたが、今回は結果が大事ですので、我慢したいと思います。
大変救われました。ありがとうございました。
No.3
- 回答日時:
instr関数とvbBinaryCompareモードの組み合わせで逃げられませんか。
ご回答ありがとうございます。
回答番号No.2のShowMeHowさんのご回答とほぼ同じ方法と思いますが、vbBinaryCompareの使い方も調べておこうと思います。ありがとうございました。
No.1
- 回答日時:
SQL Serverだけ書いときます。
以下いずれでも。
SELECT * FROM TblA
WHERE FIELD1 LIKE '%グラス%' COLLATE JAPANESE_CI_AS_KS_WS
SELECT * FROM TblA
WHERE FIELD1 LIKE '%グラス%' COLLATE JAPANESE_BIN
早速のご回答ありがとうございます。
残念ながら、いずれもAccessでは構文エラーになりました。
Oracleで試してみたところ、なんと、COLLATE・・・ナシで普通にLIKE検索するだけで、きちんと区別してくれました。今回はDBをOracleに変更できませんので、なんとかしてAccessで実現できないものかと悩んでおります。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- その他(国内) 地名と駅名のブレ 駅名どうしのブレ 尾久おぐ おく 八柱 濁音 清音 他にどのような例がありますか? 8 2022/07/15 23:45
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- その他(ホビー) 「バースデーカードを開くと音楽が流れるやつ」の検索方法がわかりません。 5 2022/12/30 15:05
- Android(アンドロイド) Pixelのレコーダーで文字起こしした英文を検索する方法 4 2022/10/21 07:45
- スピーカー・コンポ・ステレオ 再生周波数を測定できるアプリを探しています。 質問失礼しますm(*_ _)m 現在、レコードやハイレ 4 2022/06/27 10:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのクエリで1フィールドの...
-
Access2007でSQLの複数列副問い...
-
アクセスのフィルタ nullにつ...
-
Accessクエリ特定文字列のカウ...
-
Accessクエリで特定の行を削除...
-
accessで空白の時の抽出
-
Access クエリで連結する文字...
-
Accessのクエリーのゼロデータ...
-
accessで年代別抽出方法
-
このSQLを教えてください
-
SQLのLIKE検索で清音と濁音/半...
-
Access クエリ作成でパラメータ...
-
AccessからExcelへの条件付エク...
-
access2019 チェックボックスと...
-
アクセス Access 時間の引き算
-
差込印刷で顧客別に複数行のデ...
-
アクセスのレポートのヘッダー...
-
アクセスで入力したデータの順...
-
「#エラー」の回避
-
Accessのレポート上のテキスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessクエリで特定の行を削除...
-
Access2007でSQLの複数列副問い...
-
Accessのクエリーのゼロデータ...
-
アクセスのフィルタ nullにつ...
-
access2019 チェックボックスと...
-
Accessのデータの一部を削除す...
-
Access クエリで連結する文字...
-
AccessからExcelへの条件付エク...
-
Accessのクエリで1フィールドの...
-
access(アクセス):パラメータ...
-
Accessクエリで年月フィールド...
-
Accessクエリ特定文字列のカウ...
-
accessで空白の時の抽出
-
アクセスで任意の件数を抽出す...
-
Access:固定長文字列ファイル...
-
Access Left$関数で全角半角が...
-
テーブルの差分をとる結合
-
ACCESS クエリ 抽出条件が多い場合
-
Access2003 削除クエリで式1フ...
-
ACCESSでのフィールド比較方法?
おすすめ情報