• ベストアンサー

WHERE カラム名 <> ''の意味

$result = $db->query("SELECT カラム名 FROM テーブル名 WHERE カラム名 <> ''"); PHPでSQL文を作成しているサンプルがあるのですが、「WHERE カラム名 <> ''」の意味が分かりません。カンマ二つで空文字? これはどういう意味でしょうか? また、<>は何と読むのでしょうか?(検索したいので)

  • re999
  • お礼率61% (476/777)
  • MySQL
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

空文字列です。NULLではなくINSERT時に長さ0の文字列をセットしたものにヒットします。 「<> ''」では長さが1以上の文字列でかつ、NULL値以外のものがヒットします。 ちなみにオラクルでは空文字列をNULLと同一にみなすので注意が必要です(<>では比較できません)。 <>はNOT EQUALですね。

re999
質問者

お礼

回答ありがとうございました。 勉強になりましたー

その他の回答 (1)

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

データが、ブランクでないもの。 <> not equal to 日本語だと、 がブランク以外の値 かな?

re999
質問者

お礼

回答ありがとうございましたー

関連するQ&A

  • 値が「1」のカラム名を求めたい。

    任意の列の、値が「1」のカラム名を求めるにはどうしたらいいでしょうか? PHP Version 5.1.6 MySQL - 5.0.45 で運用しています。 そもそものテーブルの作り方がおかしいのかも知れませんが、 以下のようになっています。 このテーブルで、IDが「40」の列の値が「1」のカラム名を求めたいのです。 どの様にしたらいいでしょうか? ※カラム名「会員番号110」は実際は整数になっています。 ID  会員番号110  会員番号111  会員番号112  会員番号113  40  1       1       0       1       41  0       1       1       1   $sql ="select * from `member_sub_tbl` where `ID`='$ID'"; $result = mysql_query($sql, $con); //カラムの数を取得する $numFields = mysql_num_fields($result); for($i=0;$i<$numFields;$i++){ $nameFields[] = mysql_field_name($result, $i); } print_r($nameFields); これで、カラム名は全て配列に入るのですが、値が「1」のと限定する方法がわかりません。 ご教授、よろしくお願いいたします。    

    • ベストアンサー
    • PHP
  • ストアド内でカラム名一覧を取得

    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ストアド内でカラム名一覧を取得、カンマで繋げてひとつの変数にまとめたい。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 現在開発でストアドを使用する機会があり、そこで不明点が発生し悩んでおります。 以下、現状と質問です。 ■SQL SERVER 2000 ■テーブル(※)のカラム名一覧を取得し、  カラム名をカンマで繋げてひとつの変数に格納したいと思っています。  ※先の処理でカラムを取得したいテーブルをSELECTしており、  対象のテーブル名を変数に代入しています。  カラム一覧を取得するにあたり、以下のようにカーソルで習得し、  FETCHでカラム名を変数に格納しようと考えていましたが、  「'対象テーブル名'」には変数がいれられないので、どうしようかと悩んでいます。  DECLARE CURS_test CURSOR FOR   SELECT name FROM dbo.syscolumns   WHERE id IN   (SELECT id FROM dbo.sysobjects WHERE name = '対象テーブル名')   ORDER BY id, colid;  「sp_executesql」を使用してselect文を流そうとしたのですが、  複数ある列名を取得して、上記で記載しましたように  カラム名をカンマで繋げてひとつの変数に格納する方法がわかりませんでした。  こういった場合、どのように考えて、どのように書けばよいのでしょうか。  まだ触り始めたばかりで、わからないことがわかっていない部分もあり、  質問内容でわかりにくい部分がありましたらご指摘いただければと思います。  どうぞよろしくお願いいたします。

  • コラム名でテーブルを検索できますか?

    SQL & ORACLE初心者です。最近、セレクト文を使って、テーブル内のデータを取り出すことができるようになりましたが、逆にコラム名からテーブルを検索することはできるでしょうか。 例えば、TABLE_A内のコラムの中にCOLUMN_Aという名前のコラムがあるとして、このコラムが他のテーブルでも使われているかどうか、いるとしたらどのテーブルかを知りたいのです。また、COLUMN_Aと別のCOLUMN_B(それぞれが単独で記載されているテーブル名はわかっているとします)が一緒にある一つのテーブルで使われているかどうか、またそのテーブル名を知りたいときには、どのようなSQLを書けばよいでしょうか。 DBAやその他DBを構築するための知識をお持ちの方、ご回答をお待ちしています。

  • PHP+PDO+MYSQL で実行されたSQL文の取得について

    PHP+PDO+MYSQL で実行されたSQL文の取得について PEARのDBからPDOへの移行をしていましてデバック用のSQL文取得で困っています。 $sql = "SELECT * FROM sample where id = ? And id2 = ?" PEARのDBでは $db->query($sql,array(1,5)); $db->last_query; で実行したSQL文を取得することは可能でした。 PDOの場合 $sql_result = $pdo->prepare($sql); $sql_result->execute(array(1,5)); でリプレースフォルダ(クォート処理?)を利用してSQLを実行出来るようですが、 実行したSQLを確認する方法がマニュアル等を読みましたがどうしても分かりません。 どなたかご存知の方がいらっしゃいましたらご教授お願い致します。

    • ベストアンサー
    • PHP
  • MYSQLで全てのカラムから検索する。

    tbというテーブルのbangというカラムに4が含まれていれば表示というのは select * from tb where (bang) like '%4%' ; という形になりますが、このtbテーブルにさらにname,tukiというカラムがあったとして カラムに関係なくレコードのどこかに4が入っていれば抽出するというSQL文が書きたいです。 select * from tb where bang like '%4%' or name like '%4%' or tuki like '%4%' ; と書くことで何とか今まではやってきたのですが、カラム数が増えてきてしまったので、ものすごく長いSQL文なってしまいました。 もう少しスマートにする方法はありませんか?

    • ベストアンサー
    • MySQL
  • where文について

    2008-10-28のような形式でMYSQLに生年月日を登録しています。 フォームのセレクトボックスにて誕生月のみを取得しlike文では なくwhere文でデータの読み込みを行いたいのですがどうやれば できるのでしょうか? 通常だと "SELECT * FROM テーブル名 where カラム名 = '200-10-28' " でいけると思うのですが誕生月のみの情報で "SELECT * FROM テーブル名 where カラム名 = '10' " とやっても無理ですよね^^; $_POST['birth_month']で誕生月を取得し数字は01~12までです。 ※取得は問題なくできておりわからないのがwhere文の書き方です。 できるだけシンプルな方法で行いたいのですがお分かりになる方が おりましたら是非ご教授お願い致します!

    • ベストアンサー
    • PHP
  • テーブル名をカラムとして取得する方法

    テーブル名をカラムとして取得する方法はありますでしょうか? オラクル8とVB6でプログラムを組んでいます。 例 TABLE Aの内容 カラム1 1 2 3 TABLE B カラム1の内容 4 5 6 SQLは簡略化してかきます。下記のSQLを実行した場合、 select A.カラム1 from A union select b.カラム1 from b 1 2 3 4 5 6 を取得できます。 例えば、上記で、SQL実行後、 下記のような値を取得したいです。 1 ,Aのテーブルだよ 2 ,Aのテーブルだよ 3 ,Aのテーブルだよ 4 ,Bのテーブルだよ 5 ,Bのテーブルだよ 6 ,Bのテーブルだよ それぞれのテーブルの名前を別名で結果に格納したいのです。 何か方法はありますでしょうか? なければ、unionせずに、2回SQLを発行し、それぞれに、 プログラム上で、「Aのテーブルだよ」を後で挿入したいと思っています。

  • DB_FETCHMODE_ASSOCの時、結合した二つのテーブルから同一名のカラムのレコードを連想配列で取得できないのか??

    よろしくお願いします。 $db =& DB::Connect($dsn, array()); $db->setFetchMode(DB_FETCHMODE_ASSOC); とし、 $res = $db->query("select A_t.ID, B_t.ID from A_t, B_t where A_t.NO = B_t.NO"); のようにsqlを発行した時、 while($row = $res->fetchrow()){ //..... } で、$rowに値を格納しようとしたのですが、 print $row[A_t.ID]; などとすると、 Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting ']' のようなエラーが出てしまいます。 $row[ID]; では、Aテーブルから取得したレコードなのかBテーブルから取得したレコードなのか判別できないのでダメだと思います。 $db->setFetchMode(DB_FETCHMODE_ORDERD); にした場合は、$row[0]、$row[1] の添字配列を使用することによって、AテーブルのIDカラムのレコードもBテーブルのIDカラムのレコードもprintすることが出来ましたが、 $db->setFetchMode(DB_FETCHMODE_ASSOC); では、上記のように結合した両テーブルに同一名のカラム名があると、 その同じ名前を持つカラムから連想配列にデータを渡すことは出来ないのでしょうか?? どなたか詳しい方いらっしゃったらご教授くださると幸いです。 よろしくお願いしますm(_ _)m

    • ベストアンサー
    • PHP
  • MySQLから連続でデータを取るとエラーが

    $sql = "select ホゲ from ホゲホゲ where ホゲホゲホゲ like '%ホゲホゲ%';"; $result = $db->query($sql); if (DB::isError( $result )) { die($result->getMessage()); } while($row = $result->fetchRow()){ echo $row[0]; // 返却データをループ } という感じのプログラムを、テーブル名のみを変更して13行並べているのですが、最後の4つあたりが「DB Error: no such field」というエラーが出て正常に処理されません。 エラーが出ている箇所を上のほうに持ってくると解決するのですが、するとまた下の4つが・・・という感じです。 これって何が原因なのでしょうか?

    • 締切済み
    • PHP
  • in 'where clause'のエラーの理由

    まず最初に、呼出されるdb.phpの一部 <? class DBConn { var $dbhost="でーたべーすのURL"; var $dbuser,$dbpasswd,$db,$connect; function DBConn($db="データベース名",$dbuser="ユーザー名",$dbpasswd="パスワード"){ $this->dbuser=$dbuser; $this->dbpasswd=$dbpasswd; $this->db=$db; $this->connect=mysql_connect($this->dbhost,$this->dbuser,$this->dbpasswd); mysql_select_db($this->db,$this->connect); } function getResult($query){ $result[result]=mysql_query($query,$this->connect) or die(mysql_error()); $result[count]=@mysql_num_rows($result[result]); return $result; } function getSelect($field,$table,$where){ $query="select $field from $table $where;"; $result=$this->getResult($query); return $result; } ここからメインのPHP <?php $in = ""; if($_SERVER['REQUEST_METHOD'] == "POST") { $in = $_POST; }else{ $in = $_GET; } include "../base/db.php"; $db=new DBConn(); $temp_result=$db->getSelect("*","main","where username=$in[username]"); 書き出しでこのようにしているのですが、 これを呼出す前ページで<input type="text" name="username">としてPOSTしてやると Unknown column 'abcd' in 'where clause' というエラーが出ます。(abcdは前ページで適当に入力した文字) $temp_result=$db->getSelect("*","main",""); このように抽出条件無しの場合、問題なくデータは全て取得でき、 $temp_result=$db->getSelect("*","main","where username=$in[test]"); とか $temp_result=$db->getSelect("*","main","where test=$in[test]"); のように、抽出条件部分を実際にフィールド名として存在する別の名前を入れると You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 このようなエラー表示になります ネットで調べていたら、usernameが予約語だと書いてあるページがあったので`で括ってやったりもしましたが結果は同じです データベースの呼出はできてますし、抽出条件がなければデータが取得できることも確認しています。 データベースの指定テーブル内に抽出条件となるフィールドがあることも間違いありません。 どこが悪くてこのようなエラーになっているのでしょうか? 基本的な形式そのものは過去に作った物をコピペしてからはじめているので、余計にエラーの理由が分かりません。 あれこれと何時間も試しましたがどうにも解決できません。 どなたかお助けください。

    • ベストアンサー
    • PHP