• ベストアンサー

空文字

Bnbnbnta101の回答

回答No.1

nullと空文字は違いますよ。 nullは何も入っていない状態。 空文字は空文字が入っている状態。

flash0
質問者

お礼

回答ありがとうございます HTMLフォームから送る時に、文字列nullをpostした場合だと、空文字をいれるのではなくdbの値を削除できますか? ※mysqlです <select name="name"> <option value="null"> </select> $name = $_POST['neme']; //$nameの値はnull UPDATE table SET name=$name WHERE id=1

関連するQ&A

  • 空文字のアップデート

    mysql初心者です phpとmysqliを使っています テーブルhogeにid、gifとカラムがあります gifのカラムを空にしたいのですがこんな感じでいいでしょうか? mysqli_query($link,sprintf('UPDATE hoge SET gif="%s" WHERE id=%d', "", mysqli_real_escape_string($link,$id) )); よろしくお願いします

    • ベストアンサー
    • MySQL
  • 長さ1の空文字列?

    タイトルの通り、長さ1の空文字列で困っています。 現在、Linux、Apache、MySQL、PHPを使って3階層アプリケーションを作っています。 予めMySQLでテーブルの形を決めておいて、CSVからデータを読み込ませておき、 PHPでSQL文を実行してレコードを取得することで、それらをユーザに表示という感じです。 複数あるカラムのうち、空文字列(CSV上でブランクだったもの)は表示させたくないので、 PHPで「 if(カラム=="")~ 」のように比較することで、空文字列だけ避けるつもりでした。 しかし上手くいかなかったので、strlen()で調べて見たところ、返り値が1でした。 本来は空文字列に対してstrlen()は0或いはfalseの返り値を返しますよね。 is_empty()でも空データ扱いにならず、当然NULLの扱いでもありません。 そのため、実データとの区別が出来ずに困っています。 何故、空文字列のカラムを除外したいかというと、 DB上のユニークなレコードを検索したいからです。 select * from where カラム='データ' and カラム='データ'… という風に。 「カラム=''」としてしまうと検索に引っかからなくなってしまいます。 どうすればよいでしょうか。 以下はそれぞれのバージョンです。 MySQL:5.0.95 PHP:5.1.6 Linux:RHEL5 Apache:2.2.3

    • ベストアンサー
    • PHP
  • 複雑な条件下におけるupdate文について

    sqlserver(2008R2)についてクエリ文が上手く書けません。 お手数をおかけいたしますが、お分かりになる方はご教授いただければと 思います。 まず、元となるテーブルおよび作成したい完成系は添付ファイルをご確認下さい。 personal_id、personal_name、personal_address、personal_tel、personal_date列を 持つテーブル(personal_table)から 「select * into #table01 personal_table」に よって一時テーブル#table01を作成し、personal_name・address・telがnullの場合に、 personal_dateが直前時におけるnull以外の値をセットしたいと思っています。 (ただし、セットするのはpersonal_id毎で、最もpersonal_dateが若い者には 必ずpersonal_name・address・telが入っているものとします)。 なお、以下は私が作成したクエリになります。 項目1つずつっと思い、 とりあえずpersonal_nameをpersona_idおよびpersonal_dateを用いて updateしようと思ったのですが、personal_nameがすべてnullになってしまいました。 --------------------------- select * into #table01 from personal_table update #table01 set personal_name = (select personal_name from #table01 A where #table01.personal_id = A.personal_id AND #table01.personal_date = (select MAX(A.personal_date) from #table01 A where #table01.personal_date > A.personal_date AND #table01.personal_id = A.personal_id)) SELECT * from #table01 --------------------------- 完成系を作成するにあたってどのようなクエリを書けばよろしいのか、 ご教授いただければと思います。

  • 検索する文字列のデータが空の場合もその対象にしたい

    検索する文字列のデータが空の場合もその対象にするには、 SELECT * FROM `table` WHERE 1 AND `s1`='あああああ' AND `s2` IN('いいいいい',NULL) のようにするのでしょうか? 数値の場合はデータが無いのを0で表現すれば、 SELECT * FROM `table` WHERE 1 AND `m1`<=100 AND `m2`<=250 で良いですよね?

  • 複数テーブルからデータを取り、updateする

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=1211685 にも同じような質問があったのですが、同様の処理でうまくupdateされません。分かる方がいらっしゃいましたら教えてください。 今、テーブルが2つ(table1、table2)があり、それぞれ2つのカラム(column1、column2)を持っています。ここで、それぞれのカラム2が等しく、カラム1が指定した値のレコードのみ値をupdateしたいです。 update table1 set column1 = 'AAA' from table1,table2 where table1.column2 = table2.column2 and table1.column1 = 'BBB' and table2.column1 = 'CCC' としたところ、「from table1,table2 where 」の辺りに間違いがあると表示されます。 上の例とどう違うのか分かりません。 よろしくお願いします。m(__)m

  • DB2 の SQL で NULL値を空文字として取得したい。

    2つのテーブルをLEFT OUTER JOIN等によって結合した場合、値がNULLになるカラムが出てくる事がよくあります。 この場合、取得する値をnullではなく空文字(長さ0の文字列)として取得する事は可能でしょうか? IS NULL関数やNVS関数など、他のDBMSで使えた方法がエラーとしてはじかれてしまいました。何か特別なコマンドがあるのかも知れませんが、手元のマニュアルにありません。オンラインマニュアルなどがあればいいのですが、今の所見つかっていません。 どなたかご存知でしたら、教えて頂けないでしょうか。

  • SQL文 テーブルの作成方法について

    以下のようなTABLE1からTABLE2というテーブルを作成したいと考えております。 元テーブル(TABLE1)は、IDという項目がキーとなってデータが入っており、NAME1とNAME2という項目があります。 (NAME1は必ず値が入っていますが、NAME2は値が入っていない場合もあります) 加工後のテーブル(TABLE2)で、NAME1とNAME2の値を結合した形で結果を出力したいと考えております。 (新たに作成したNAMEカラムは、必ずしもユニークになっているとは限りません。NAMEとIDを組み合わせるとユニークになります) ---------------------------------------------------- ■ TABLE1 ID NAME1 NAME1_CATE NAME2 NAME2_CATE ---------------------------------------------------- 001 鈴木 A 山田 B 002 山本 A 003 佐藤 A 高橋 B ---------------------------------------------------- ---------------------------------------------------- ■ TABLE2 ID NAME NAME_CATE ---------------------------------------------------- 001 鈴木 A 001 山田 B 002 山本 A 003 佐藤 A 003 高橋 B ・・・ ---------------------------------------------------- いろいろ試していますが、どのようなSQL文を書いたらよいのか分かりません。 現状のSQL(エラーとなります) ====================================================================================== SELECT ID, NAME, NAME_CATE FROM (SELECT ID, NAME1 as NAME, NAME1_CATE as NAME_CATE FROM TABLE1 WHERE NAME1<>NULL) JOIN (SELECT ID, NAME2 as NAME, NAME2_CATE as NAME_CATE FROM TABLE1 WHERE NAME2<>NULL) ====================================================================================== 初歩的な質問になるかと思ってしまうかと思いますが、よろしくお願いいたします。

  • version7,version8 の型の扱い

    PostgreSQL の 7 から8 へマイグレーション作業をしている者です。 int型で not null制約のあるカラム「id」 の値から、''(空)であることを判定する時、 version7 では、 $sql = "select * from tbl_name where id <> ''"; のSQL文で動いていたようですが、 version8 では、 型の扱いが厳しくなった訳か、syntax error となります。 この場合version8 では、 $sql = "select * from tbl_name where id <> 0"; が、 ''(空)であることを判定するSQL文と考えてよいでしょうか? ご教授よろしくお願いします。

  • あるカラムを対象に、Nullと空文字をゼロとして抽出したい

    SQL server 2005についての質問です。 ISNULL関数を使うと、Nullをゼロとして取り出せることがわかりました。 しかし、空文字をゼロとして取り出すことはできないようでした。 Nullと空文字が入り混じったカラムを対象に、Nullだけでなく空文字もゼロとして取り出す関数などはあるでしょうか? 以上、どうぞよろしくお願い致します。

  • 大文字小文字を識別しない検索方法について

    DBに例えば、nameフィールドに"SUzuKI"と登録されていたとします。 この場合に、SQLで、"select * from table where name LIKE '%uzuki%';"と検索してもヒットしません。大文字小文字を判別するからです。大文字小文字を判別しない検索方法についてお分かりになる方がいらっしゃいましたら、ご教示をお願いいたします。 よろしくお願いいたします。