
SQL Server+Accessで使用しています。
ユーザから入力したはずのデータが検索時にヒットしないという質問があり、SQL Serverのデータベースの中を確認するとデータは存在していました。
確認のためにビューを利用して検索したのですが、データが存在するのにヒットしません。仕方ないのでワイルドカードを使用して検索するとヒットします(下例参照)。
キーとなるデータ:ABCDEFGH
検索キー:ABCDEFGH
ワイルドカード使用:LIKE 'ABCDEFG%'
検索時のキーとなるデータは8桁なのでワイルドカードを使用して1桁~8桁まで試しましたがヒットします。が、普通に検索するとヒットしません。
キーとなるデータ形式がおかしいのかと手入力してみましたが、結果は同じでした。ヒットしない原因は何なのでしょうか?
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')
回答ありがとうございます。
教えていただいたSQLを実行したらヒットしない理由が分かりました。
IDは「ABCDEFGH ABCDEFGH 」でC0は「18」になっていました。早速DBのデータを修正しました。
不思議なのは、ビューでDBのデータを確認したときには、「ABCDEFGH」としか表示されていないんです。残りの10桁分が表示されないのはどうしてなのでしょうか?
No.6
- 回答日時:
s_husky です。
No1、No3の方の回答以上ではありません。
テーブルの列の型宣言とフォームでの入力・登録時の注意事項ですのでプログラミングしないのであれば関心を持つ必要はありません。
No.5
- 回答日時:
スーツのデザイナーでプログラマではありません。
が、一言。
Accessプロジェクトから'ABCDEFG'と入力し直しても、'ABCDEFG___' と登録されるという SQL Server 固有の問題とそれの対策はしてますよね!
回答ありがとうございます。
>Accessプロジェクトから'ABCDEFG'と入力し直しても、'ABCDEFG___' と登録されるという SQL Server 固有の問題とそれの対策はしてますよね!
このシステムを作成した担当者が退職していてよくわかりませんが、検索してヒットするIDとヒットしないIDがあるのでおそらく対策はしてあるのだと思います。私自身、DBは得意ではないので、上記の固有の問題を解説してあるHPがあれば教えていただきたいです。
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の絡みで問題になっている気もします。
この回答への補足
回答ありがとうございます。
>SELECT ID, Len(ID) AS C0, ~
上記のSQLを実行すると「演算子がありません」というメッセージが出て実行できません。このSQLでいいんですよね?
No.3
- 回答日時:
> WHERE (ID = N'ABCDEFGH')
> WHERE (ID LIKE N'ABCDEFG%')
これでは構文エラーですが。。。
"N"が余計ですね。
恐らく"N"はミスタイプだと思いますが。
逆に、文字列の先頭の方にワイルドカードを指定すると検索できるでしょうか?
SELECT 台帳.*
FROM 台帳
WHERE (ID LIKE '%BCDEFGH')
これで引っかからないようであれば、やはりHの後ろに
スペースがあるのではないか?と思われます。
この回答への補足
回答ありがとうございます。
>これでは構文エラーですが。。。
>"N"が余計ですね。
>恐らく"N"はミスタイプだと思いますが。
ビューでGUIから操作をすると勝手に"N"がついてしまいます。
>SELECT 台帳.*
>FROM 台帳
>WHERE (ID LIKE '%BCDEFGH')
これで試してみましたが、ヒットします。ということは、Hの後ろにスペースはないということですよね?
No.2
- 回答日時:
どのようなSELECT文を発行してますか?
ここにコピーしてみていただくことは可能ですか?
'ABCDEFGH'の大文字・小文字の違いは確かめましたでしょうか?
この回答への補足
回答ありがとうございます。
SELECT文は以下のようになります。
ヒットしない例
SELECT 台帳.*
FROM 台帳
WHERE (ID = N'ABCDEFGH')
ヒットする例
SELECT 台帳.*
FROM 台帳
WHERE (ID LIKE N'ABCDEFG%')
LIKE N'ABCDEFG%' はLIKE N'A%' ~ LIKE N'ABCDEFGH%' を試して全てヒットします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) MacのPCでわファイルを検索したくて、右上の虫眼鏡で検索をかけますが、EPSデータが何故か検索デー 2 2022/10/25 10:29
- その他(Microsoft Office) Windows Update 後、Office2019(Word、Excelなど)が消えた 4 2023/01/14 10:28
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- ホームページ作成・プログラミング パスワードつきホームページ トップページ以下はどうなる 6 2022/08/16 12:04
- 英語 英語のレポートとして、世界遺産についてまとめることになり、イギリスのウェストミンスター宮殿の歴史と現 2 2022/11/05 22:35
- SEO 検索エンジン反映遅い 1 2022/06/04 07:35
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Android(アンドロイド) 今日楽天LINKで、電話をかけようとすると 新機能追加に伴う規約変更のお知らせ 同意しないと使えな 2 2023/07/05 16:18
- ポイントサービス・マイル マイナポイント5000円分取得条件である「2万円分の利用」について 5 2022/12/29 22:36
- 韓国語 日本で芸能人や選手のサインを検索するときは 『イチロー サイン』『安室奈美恵 サイン』と、【○○○ 1 2022/07/05 07:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日本語のテーブル名、カラム名...
-
db2でisnumericは使えないので...
-
【マクロ】列を折りたたみ非表...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
変数が選択リストにありません
-
INSERT INTO ステートメントに...
-
FROM の中で CASE を使えるでし...
-
Accessのクエリでデータの入力...
-
datファイルからaccessにインポ...
-
Accessでテーブル名やクエリ名...
-
Access テキスト型に対する指定...
-
Accessのフィールド数が255しか...
-
access2000:フォームで入力し...
-
テーブルの存在チェックについて
-
エクセルグラフの凡例スペース
-
フィールド数の多すぎる・フィ...
-
「更新に必要なキー列の情報が...
-
Accessでテーブルからテーブル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日本語のテーブル名、カラム名...
-
db2でisnumericは使えないので...
-
検索時にヒットしない
-
Accessから主キーの無いOracle...
-
DB設計に要する見積もりについて
-
正規形のメリット&デメリット
-
正規化について
-
ACCESS2000:主キーに半角と全...
-
~以外のSQLについて
-
各カテゴリの件数の計算方法に...
-
「正規形」のよみかた
-
テーブル設計の際の縦持ちについて
-
Excel 2019 のピボットテーブル...
-
【マクロ】列を折りたたみ非表...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
Accessでテーブル名やクエリ名...
-
INSERT INTO ステートメントに...
-
Access テキスト型に対する指定...
-
エクセルグラフの凡例スペース
おすすめ情報