Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Access 2010)
Like文(SQL) 日本語検索について
投稿日時: 18/06/06 14:49:17
投稿者: yyysss0129

SQL文(SQLビューにて)
「SELECT * FROM T_マスタ WHERE 施設名 Like "*" & Forms!F_Main!txt施設名 & "*"」
というクエリを走らせますと、思い通りに結果がでません。
  
テキストボックス「Forms!F_Main!txt施設名」に
例えば
「東大」と入力し、上記のクエリを実行しますと
「東邦大」
とか
「東京〇〇〇〇大」
などが表示されてしまいます。
  
例えば
「〇〇東大〇〇」
「東大〇〇」
「〇〇東大」
  
とか、「東大」というかたまりだけのデータを引っ張りたい場合
どうすればいいのでしょうか?
  
ネットで調べると、
「半角英字」は、上記の構文で思った通りになるが
「全角日本語」だと、そのようにならない?
ということなのかな、と感じています(当方の勘違いかもしれませんが)
  
Accessで、イメージ通りの検索をするには、
何か工夫が必要なのでしょうか?
  
宜しくお願い致します。
  
PS
テキストボックスに
「東*大」のように入力はしていません。
「東大」と入力しています。
 
 

投稿日時: 18/06/06 15:03:09
投稿者: yyysss0129

Suzu様
 
私が間違えて書いてしまった
AccessVBAの投稿欄の方に書いてくださった
 
WHERE Nz(InStr(1,[T_マスタ].[施設名], " & Forms!F_Main!txt施設名 & ",0),0)>0
 
というWHERE文で、
思った通りの感じになりました。
 
一応、もう少し、いろいろ検証させて頂きますが
取り急ぎ、これで問題なさそうのとご報告をさせて頂きます。
 
ありがとうございました。
 

投稿日時: 18/06/06 15:10:25
投稿者: yyysss0129

sk様
 
私が間違えて書いてしまった
AccessVBAの投稿欄にて
 
「東*大」と入力をしたのではとご指摘頂きましたが
一応、「東大」と普通に入力しています。
 
コメントありがとうございました。
 

回答
投稿日時: 18/06/06 15:14:10
投稿者: sk

引用:
「東*大」と入力をしたのではとご指摘頂きましたが
一応、「東大」と普通に入力しています。

[T_マスタ]は mdb / accdb ファイル自身に定義されたテーブルなのでしょうか。
それとも別の外部データベースをリンク先とするリンクテーブルでしょうか。

投稿日時: 18/06/06 15:18:03
投稿者: yyysss0129

sk さんの引用:

[T_マスタ]は mdb / accdb ファイル自身に定義されたテーブルなのでしょうか。
それとも別の外部データベースをリンク先とするリンクテーブルでしょうか。

 
[T_マスタ]は、accdbファイルのテーブル(普通のテーブル)です。
施設名フィールドは、通常のテキスト型のフィールドです。
 
宜しくお願い致します。
 

回答
投稿日時: 18/06/06 15:51:34
投稿者: sk

引用:
[T_マスタ]は、accdbファイルのテーブル(普通のテーブル)です。
施設名フィールドは、通常のテキスト型のフィールドです。

意図せず抽出されてしまう文字列に共通している文字、
例えば長音記号(ー)などが含まれていたりはしないでしょうか。

回答
投稿日時: 18/06/06 17:33:40
投稿者: Suzu

他に Or 条件 で 指定していたりしませんか?

投稿日時: 18/06/14 10:09:02
投稿者: yyysss0129

sk様
Suzu様
 
検証の結果
T_マスタの取り込み元Csvの「文字列の構造?」に問題があるようだ
という所までわかりました。
 
某データベースから
某データベースアプリケーションを介してCsvを落としているのですが
そのCsvの「文字列の構造?」かなんかに問題があるようです。
(出向先情報なので、詳しくは記載できません)
 
AccessのT_マスタ内の施設名フィールドに
自ら
「東〇大」
とか
「東〇〇〇大」
と手入力したデータに関しては、
「WHERE 施設名 Like "*東大*"」
の条件のSQLでは引っかかってきませんでした。
(Csvで取り込んだ施設名の「東〇〇〇大」は、引っかかります)
 
この検証から
直接Accessのテーブルに手入力では問題なく
Csv(またはCsv取り込み)に何か問題がある、という所まではわかりました。
 
私のレベルでは、内容が深すぎて
これ以上、よくわからなそうですが、
追って確認してみたいと思います。
 
途中経過でした。
 
 
 
 
 
 
 

回答
投稿日時: 18/06/14 12:42:03
投稿者: よろずや

>そのCsvの「文字列の構造?」かなんかに問題があるようです。
そのCsvをエディタかメモ帳で開いてみればすぐに判ることだと思いますが。

投稿日時: 18/06/14 14:16:40
投稿者: yyysss0129

皆さま
 
私の検証が不十分でした。
 
sk様のご指摘通り
「長音記号」が入っているデータだけが
抽出されていました。
 
「東〇〇ー大」
みたいに、「東」と「大」の間に「ー(長音記号)」が入っていて
かつ、
「ー大」というように「ー」と「大」が連続してつながっている場合のみ、
Like文のあいまい検索で、抽出されてしまうようです。
 
※ 「東〇〇ー〇〇大」のように、
「ー」と「大」の間に、文字がはさまる場合は
抽出されません。
 
この場合について、
知識がなかったのですが、
Webにて、いろいろ調べたところ
長音を含む場合、Accessのバクで、あいまい検索の時
抽出されてしまう、と知りました。
 
今後、Msさんの方で、直す見込みもなさそう?
とのことでした(2013でも治ってないとか)
 
このバクは上記のように、
治らない、と考えておいてよいのでしょうか?
 
 
 
 
 
 
 
 
 
 
 
 
 

回答
投稿日時: 18/06/14 22:12:42
投稿者: hatena
投稿者のウェブサイトに移動

yyysss0129 さんの引用:
このバクは上記のように、
治らない、と考えておいてよいのでしょうか?

 
2016でも治ってないようなので、治る見込みは薄いでしょうね(-_-;)

投稿日時: 18/06/15 08:50:25
投稿者: yyysss0129

hatena様、皆さま
 
ありがとうございます。
治らなそうな見込みとのこと、承知いたしました。
 
WHERE Nz(InStr(1,[T_マスタ].[施設名], " & Forms!F_Main!txt施設名 & ",0),0)>0
 
だと、上手くいくので、こちらで対応したいと思います。
 
皆さま
ありがとうございました。