• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:単純なクエリーなのにSELECTしてもEmpty)

SELECT文でEmptyが返ってしまう原因と解決策

このQ&Aのポイント
  • 単純なクエリーなのにSELECTしてもEmptyが返ってしまう現象について解説します。
  • テーブルの特定のフィールドに対してSELECT文を発行する際にEmptyが返る原因として、INSERTされたレコードとの関連性が考えられます。
  • クローラーによって行われるレコードのINSERTやストレージエンジンの影響も要因として挙げられます。

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

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.3

SELECT page_id, site, LENGTH(site), HEX(site) FROM videos WHERE site LIKE '%hoge'; の実行結果を念のため確認するとどうなるでしょう? 正しく'hoge'が格納されているなら,LENGTH()は4バイトになるでしょうし,HEX()表記は686f6765になるでしょう。

jimascript
質問者

補足

site | LENGTH(site) | HEX(site) fc2 | 3 | 666332 実際に格納されているデータはhogeでなくfc2ですのでLENGTHは3になりました。HEXは666332です。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

mroongaエンジンを試す環境がないためなんともいえませんが 別のエンジンで試してみてはどうでしょう? 別のエンジンで問題ないなら場合によってはmroongaエンジンの 何らかの特性や制限の可能性もあるので、そちらの専門サイトで 仕様を確認してみてください

すると、全ての回答が全文表示されます。
  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.2

 ためしに、識別子(テーブル名・フィールド名)を囲っているバッククォートを無しにするとどうなりますか?ようするに、識別子は何も囲わないということです。  これでうまくいくようなら、sql_mode制御変数あたりを調べてみる感じかなぁ

jimascript
質問者

補足

回答ありがとうございます。 > SELECT page_id FROM videos WHERE site = 'hoge'; としてみましたが、やはりEmptyでした。 また、=ではなくLIKEを使用してみたところ > site LIKE '%hoge'; > site LIKE '_oge'; この2つの方法で期待通りの結果が取得できました。 以下のようなクエリだとEmptyとなります。 > site LIKE 'hoge%'; > site LIKE '_hoge'; また引き続き宜しくお願い致します。

すると、全ての回答が全文表示されます。
  • zeta0208
  • ベストアンサー率45% (17/37)
回答No.1

UPDATE `table` SET `site` = 'hoge' WHERE `page_id` = 1; SELECT `page_id`,`site` FROM `table` WHERE `page_id` = 1'; を実行してみたら何かわかるんじゃない? `page_id` = 1'の時に`site`に何が入っているか確認するのがまず最初だと思いますよ。 自分の期待する値のデータがセットされているかどうか確認するのが鉄則ですよ。 それでセットされていることが確認できたら SELECT `page_id` FROM `table` WHERE `site` = 'hoge'; を実行してみたらどうですか? 調査はその後ですね。 後、COMMIT;を忘れているとか?さすがにそれは無いか?

jimascript
質問者

補足

回答有り難うございます。 `page_id` = 1'の時に`site`に何が入っているか ということですが、もちろんそれは把握済みですし、それが間違っているというイージーミスは考えにくいです。 >何度も試したので、単純に`site` = 'hoge'の文字列自体が間違っている、などのことは無いはずです。 なお、`site`には現在2種類の文字列しか入っていません。そのどちらもSELECTでEmptyが返ってきます。 ですが、UPDATEを行なって、UPDATE後の文字列をSELECTするとちゃんと1件返ってきます。 `site`に'hoge'を入れる ↓ `site`='hoge'でSELECT ↓ Empty その'hoge'をUPDATEで'fuga'に変更 ↓ `site`='fuga'でSELECT ↓ 1件返ってくる その'fuga'をUPDATEで再度'hoge'に戻す ↓ `site`='hoge'でSELECT ↓ やはりEmpty という状態です。 引き続き宜しくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A