【最大10000ポイント】当たる!!質問投稿キャンペーン!

よろしくお願いします。

下記内容のtest_tableを作成して
----
CREATE TABLE "test_table" (
"id" varchar(10) NOT NULL,
"fdate" date
);
----

下記内容のデータを登録しました。
----
insert into test_table(id,fdate) values ('abc',NULL);
----

下記のsqlでデータを取得できませんでした。
どうしてでしょうか?
select * from test_table where fdate = NULL;

A 回答 (1件)

select * from test_table where fdate = NULL;


ではなく
select * from test_table where fdate is NULL;
でお試し下さい。
    • good
    • 0
この回答へのお礼

解決しました。ありがとうございました。

お礼日時:2003/10/16 09:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q日付型のフィールドに空白を入れる方法を教えてください

ASP(VBScript)でSQLサーバにINSET INTO文を使ってデータを格納しているのですが、日付の部分がNULLの時、「1900/1/1」が入ってしまいます。
そのまま、空白を入れる方法はどうやったらよろしいのでしょうか?

TABLE1の内容は
番号|内容|日付です。

INSERT INTO TABLE1 VALUES ( 1, 'あいう', '')

結果
1|あいう|1900/1/1

Aベストアンサー

あとは、プログラムの書き方次第ですね、、、


If hensu=Null Or hensu="" Then
dt = "NULL"
Else
dt = "'" & hensu & "'"
End IF

E_SQL = "INSERT INTO TABLE1 VALUES & _
"( 1,'あいう', " & dt& ")"
の様に書きます。

Qtimestampのデータはどのようにして入力

するのでしょうか?

create table tablex(no serial primary key,time timestamp);

insert into tablex(time) values(?);

において?の部分に入れる文字列のフォーマットはどうなるのでしょうか?

例えば
2005年5月5日5時55分55秒
を入れるにはどうしたらいいのでしょうか?

Aベストアンサー

'2005-05-05 05:55:55'

Qdate型に空白を入れるとエラーになる

現在、CSVファイルからCOPYコマンドを使用し、
データのINSERTを行いたいと思っております。

で試したところ、

COPY test from '/var/lib/pgsql/csv/insert.csv' USING DELIMITERS ',';

とコマンドを入力した結果
ERROR: invalid input syntax for type date: ""
CONTEXT: COPY test, line 1, column purchase: ""
となってしまいます。

これを回避するためには、どうすればよいでしょう。

postgresqlは初心者なので、申し訳ございませんが
教えてください。よろしくお願いいたします。

Aベストアンサー

perl -p -e "s/\"\"//g" 入力ファイル > ワークファイル
で前処理して
copy into テーブル from ワークファイル with csv null ''
で入力してみては。

Qtimestamp が空のデータを除いて、データを選択したい

テスト用に簡単なテーブルを作成してみました。

テーブル名:timetest

フィールド:
test_id : integer NOT NULL
test_date : timestamp without time zone

テストデータとして

1,2005-11-15 14:01:40.026
2,NULL
3,2005-11-14 11:11:11.001


このときに test_date がNULL以外のものだけを選択したいのですが、

slect * from timetest where test_date != null;

では1件も選択されず、

select * from timetest where test_date != '';

では、
ERROR: invalid input syntax for type timestamp: ""
というエラーになってしました。

どなたかご教授お願い致します。

Aベストアンサー

IS NULL演算子を使ってみてはどうでしょうか?
書式は「カラム名 IS NULL」


NULL以外のものであれば、

SELECT * FROM timetest WHERE test_date IS NOT NULL

とすれば、「NULL以外のデータ」という事になります。

Qcastの使用法について(初心者です)

始めまして。初心者ですので基本的な質問になるかもしれませんがよろしくお願いします!

なぜかPostgreSQLを仕事に使うことになり、四苦八苦しています。

テーブルを作成しているときに、
create table syouhin (shinamono text, nedan int);
とするとします。
で、insert でデータを入れていきますが、
例:
shinamono | nedan
------------------
みかん |100
マンゴー |200

例えば、nedan のcast が今、int にしましたが、これをchar やfloatに変えたいときはどうすればよろしいのでしょうか?

どなたか御存じの方、お手数ですがお教え下さい!!!

Aベストアンサー

CAST関数の文法は、CAST(○ AS △) となります。
○:変換する値
△:変換する型

Select CAST(nedan AS char(10)) ~
とすればできると思いますよ

Qdate型でのbetweenについて教えてください。

皆様、新年明けましておめでとうございます。

早速ですが、date型でのbetweenについて教えてください。

SQL文
SELECT * FROM test WHERE date between date '2007-12-01' and date '2007-12-31'

を発行すると、2007-12-31のレコードがあるのに該当しません・・・

試しにSQL文を
SELECT * FROM test WHERE date between date '2007-12-01 00:00:00' and date '2007-12-31 23:59:59'
としても2007-12-31のレコードは検索されません・・・
SQL文を
SELECT * FROM test WHERE date between date '2007-12-01' and date '2008-01-01'
にすると2007-12-31が該当するのですが、
SELECT * FROM test WHERE date between date '2007-12-01' and date '2007-12-31'
では2007-12-31のレコードは該当しないものでしょうか??

select * from test where num between 10 and 100
とした場合では、num が 10 ~ 100 のものが問い合わされますよね??
date型になるとこうならないのでしょうか??

よろしくお願いします。

皆様、新年明けましておめでとうございます。

早速ですが、date型でのbetweenについて教えてください。

SQL文
SELECT * FROM test WHERE date between date '2007-12-01' and date '2007-12-31'

を発行すると、2007-12-31のレコードがあるのに該当しません・・・

試しにSQL文を
SELECT * FROM test WHERE date between date '2007-12-01 00:00:00' and date '2007-12-31 23:59:59'
としても2007-12-31のレコードは検索されません・・・
SQL文を
SELECT * FROM test WHERE date between date...続きを読む

Aベストアンサー

No.1です。
列の属性をtimestampにして実行してみました。

Welcome to psql 8.2.0, the PostgreSQL interactive terminal.
farm=# create table testtbl6 (hoge timestamp);
CREATE TABLE
farm=# insert into testtbl6 values('2007-12-31');
INSERT 0 1
farm=# select * from testtbl6;
hoge
---------------------
2007-12-31 00:00:00
(1 row)

farm=# select * from testtbl6 where hoge between '2007-01-01' and '2007-12-31';
hoge
---------------------
2007-12-31 00:00:00
(1 row)

farm=# select * from testtbl6 where hoge between date '2007-01-01' and date '2007-12-31';
hoge
---------------------
2007-12-31 00:00:00
(1 row)

●時間だけを多少進めたデータを追加してみました

farm=# insert into testtbl6 values('2007-12-31 01:00:00');
INSERT 0 1
farm=# select * from testtbl6;
hoge
---------------------
2007-12-31 00:00:00
2007-12-31 01:00:00
(2 rows)

farm=# select * from testtbl6 where hoge between '2007-01-01' and '2007-12-31';
hoge
---------------------
2007-12-31 00:00:00
(1 row)

farm=# select * from testtbl6 where hoge between date '2007-01-01' and date '200
7-12-31';
hoge
---------------------
2007-12-31 00:00:00
(1 row)

よって、あなたのDBに登録してあるデータは、2007-12-31と午前0時を少し回っているデータが登録されているため、
検索でヒットしないのではないのでしょうか?

No.1です。
列の属性をtimestampにして実行してみました。

Welcome to psql 8.2.0, the PostgreSQL interactive terminal.
farm=# create table testtbl6 (hoge timestamp);
CREATE TABLE
farm=# insert into testtbl6 values('2007-12-31');
INSERT 0 1
farm=# select * from testtbl6;
hoge
---------------------
2007-12-31 00:00:00
(1 row)

farm=# select * from testtbl6 where hoge between '2007-01-01' and '2007-12-31';
hoge
---------------------
2007-12-31 ...続きを読む

QHTMLフォームのSELECTの幅を一定にするためには?

HTMLフォームのSELECTの幅を一定にするためにはどのようにすれば
いいのでしょうか?

CSS等で設定できるとありがたいのですが、やり方がわかりません。

Aベストアンサー

<select style="width: 200px">

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

Q複数の条件での絞り込み検索の仕方

PostgreSQLで複数の条件での絞り込み検索をしたいのです。

テーブルには
発売日、商品名、入荷日
があります。
例えば
発売日が2007年5月1日から5月5日で、商品名に「○○」もしくは「××」もしくは「△△」が含まれており、入荷日が一番新しいもの
という条件で検索したいのです。

発売日だけの絞込みならBetweenですし、商品名だけならor、入荷日の最新だったらmaxを使えば個別には検索できるのですが、これをまとめて一行でやるにはどうしたらよいのかわかりません。
それぞれでandでつなげてみましたが、orの条件がうまく反映されず、一個目の○○だけが検索に引っかかってる状態です。
××や△△もひっかかるようにするにはどう記述したらよいのでしょうか。

Aベストアンサー

データ件数がどのくらいあるのかは分かりませんが、ユニークなキーもなく、likeの任意一致をorでつなぐという方法は、性能を出せませんよ?

select *
from t1
where 入荷日 in(
select max(入荷日)
from t1
where 発売日 between '2007-05-01' and '2007-05-05'
and (商品名 like '%○○%' or 商品名 like '%××%' or 商品名 like '%△△%')
)
and 発売日 between '2007-05-01' and '2007-05-05'
and (商品名 like '%○○%' or 商品名 like '%××%' or 商品名 like '%△△%')

QPostgreSQLで表結合+DELETEしたい

PostgreSQLで、テーブル(2)の情報をキーに(1)を削除したいのですが、エラーが出てしまいます。
どなたか解決策をご存知の方いらっしゃいましたら
ご教授宜しくお願い致します。

_構造_____________________
テーブル(1)・・カラムA
テーブル(2)・・カラムA、カラムB

_SQL文_____________________
DELETE
FROM (1)
INNER JOIN (2) ON (1).カラムA= (2).カラムA
WHERE (2).カラムB=X

_エラーメッセージ__________
[Err] ERROR: syntax error at or near "INNER"

Aベストアンサー

PostgreSQLではDELETE文の拡張構文として「USING」が使えます。

DELETE
FROM (1)
USING (2)
WHERE (1).カラムA= (2).カラムA
AND (2).カラムB=X

マニュアルを参照してください。
http://www.postgresql.jp/document/9.0/html/sql-delete.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング