• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:検索時にヒットしない)

検索時にヒットしない理由とは?

このQ&Aのポイント
  • SQL Server+Accessで使用している際に、ユーザから入力したデータが検索時にヒットしない問題が発生しました。
  • データベースの中を確認すると、ユーザが入力したデータは存在していることがわかります。
  • 確認のためにビューを利用して検索したところ、データが存在するにも関わらずヒットしない現象が発生しました。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakko99
  • ベストアンサー率63% (19/30)
回答No.7

No4です。失礼しました。こちらの文法ミスです。 SELECT ID, Len(ID) AS C0, CASE when substring(ID, 1, 1)='A' THEN 1 Else 0 End AS C1, CASE when substring(ID, 2, 1)='B' THEN 1 Else 0 End AS C2, CASE when substring(ID, 3, 1)='C' THEN 1 Else 0 End AS C3, CASE when substring(ID, 4, 1)='D' THEN 1 Else 0 End AS C4, CASE when substring(ID, 5, 1)='E' THEN 1 Else 0 End AS C5, CASE when substring(ID, 6, 1)='F' THEN 1 Else 0 End AS C6, CASE when substring(ID, 7, 1)='G' THEN 1 Else 0 End AS C7, CASE when substring(ID, 8, 1)='H' THEN 1 Else 0 End AS C8, CASE when ID='ABCDEFGH' THEN 1 Else 0 End AS C9 FROM 台帳 WHERE (ID LIKE '%BCDEFGH')

laibach
質問者

お礼

回答ありがとうございます。 教えていただいたSQLを実行したらヒットしない理由が分かりました。 IDは「ABCDEFGH ABCDEFGH 」でC0は「18」になっていました。早速DBのデータを修正しました。 不思議なのは、ビューでDBのデータを確認したときには、「ABCDEFGH」としか表示されていないんです。残りの10桁分が表示されないのはどうしてなのでしょうか?

その他の回答 (6)

noname#22222
noname#22222
回答No.6

s_husky です。 No1、No3の方の回答以上ではありません。 テーブルの列の型宣言とフォームでの入力・登録時の注意事項ですのでプログラミングしないのであれば関心を持つ必要はありません。

noname#22222
noname#22222
回答No.5

スーツのデザイナーでプログラマではありません。 が、一言。 Accessプロジェクトから'ABCDEFG'と入力し直しても、'ABCDEFG___' と登録されるという SQL Server 固有の問題とそれの対策はしてますよね!

laibach
質問者

お礼

回答ありがとうございます。 >Accessプロジェクトから'ABCDEFG'と入力し直しても、'ABCDEFG___' と登録されるという SQL Server 固有の問題とそれの対策はしてますよね! このシステムを作成した担当者が退職していてよくわかりませんが、検索してヒットするIDとヒットしないIDがあるのでおそらく対策はしてあるのだと思います。私自身、DBは得意ではないので、上記の固有の問題を解説してあるHPがあれば教えていただきたいです。

  • sakko99
  • ベストアンサー率63% (19/30)
回答No.4

SELECT ID, Len(ID) AS C0, CASE substring(ID, 1, 1)='A' THEN 1 Else 0 End AS C1, CASE substring(ID, 2, 1)='B' THEN 1 Else 0 End AS C2, CASE substring(ID, 3, 1)='C' THEN 1 Else 0 End AS C3, CASE substring(ID, 4, 1)='D' THEN 1 Else 0 End AS C4, CASE substring(ID, 5, 1)='E' THEN 1 Else 0 End AS C5, CASE substring(ID, 6, 1)='F' THEN 1 Else 0 End AS C6, CASE substring(ID, 7, 1)='G' THEN 1 Else 0 End AS C7, CASE substring(ID, 8, 1)='H' THEN 1 Else 0 End AS C8, CASE ID='ABCDEFGH' THEN 1 Else 0 End AS C9 FROM 台帳 WHERE (ID LIKE '%BCDEFGH') で確認するとどうでしょうか? > ビューでGUIから操作をすると勝手に"N"がついてしまいます。 ID列がNCHARまたはNVARCHARなんだと思いますが、 本当にID列は1バイトコードですか? UNICODEの絡みで問題になっている気もします。

laibach
質問者

補足

回答ありがとうございます。 >SELECT ID, Len(ID) AS C0, ~ 上記のSQLを実行すると「演算子がありません」というメッセージが出て実行できません。このSQLでいいんですよね?

  • 12pockets
  • ベストアンサー率30% (8/26)
回答No.3

> WHERE (ID = N'ABCDEFGH') > WHERE (ID LIKE N'ABCDEFG%') これでは構文エラーですが。。。 "N"が余計ですね。 恐らく"N"はミスタイプだと思いますが。 逆に、文字列の先頭の方にワイルドカードを指定すると検索できるでしょうか? SELECT 台帳.* FROM 台帳 WHERE (ID LIKE '%BCDEFGH') これで引っかからないようであれば、やはりHの後ろに スペースがあるのではないか?と思われます。

laibach
質問者

補足

回答ありがとうございます。 >これでは構文エラーですが。。。 >"N"が余計ですね。 >恐らく"N"はミスタイプだと思いますが。 ビューでGUIから操作をすると勝手に"N"がついてしまいます。 >SELECT 台帳.* >FROM 台帳 >WHERE (ID LIKE '%BCDEFGH') これで試してみましたが、ヒットします。ということは、Hの後ろにスペースはないということですよね?

  • 12pockets
  • ベストアンサー率30% (8/26)
回答No.2

どのようなSELECT文を発行してますか? ここにコピーしてみていただくことは可能ですか? 'ABCDEFGH'の大文字・小文字の違いは確かめましたでしょうか?

laibach
質問者

補足

回答ありがとうございます。 SELECT文は以下のようになります。 ヒットしない例 SELECT 台帳.* FROM 台帳 WHERE (ID = N'ABCDEFGH') ヒットする例 SELECT 台帳.* FROM 台帳 WHERE (ID LIKE N'ABCDEFG%') LIKE N'ABCDEFG%' はLIKE N'A%' ~ LIKE N'ABCDEFGH%' を試して全てヒットします。

  • 12pockets
  • ベストアンサー率30% (8/26)
回答No.1

> キーとなるデータ:ABCDEFGH ABCDEFGHの後ろにスペースが入ってませんか? 'ABCDEFGH ' みたいに。

laibach
質問者

補足

回答ありがとうございます。 スペースが入っていることも考えて、該当のデータを一度削除して再入力したんですが、それでもヒットしないんです。

関連するQ&A