NUMERIC 型を使用した 3 つの列を持つテーブルがあります。ただし、そのうちの 2 つは何もありません (つまり、空です)。コードは次のとおりです。
CREATE TABLE profiles(
ID SMALLINT,
FID SMALLINT,
SURVEY VARCHAR(100),
PROFILE VARCHAR(100),
TYPE VARCHAR(100),
SOURCE VARCHAR(100),
NR_TRACES NUMERIC,
TRACE_SPACE_M NUMERIC,
LENGTH_M NUMERIC,
IMAGES TEXT,
COMMENTS TEXT
);
ALTER TABLE profiles ADD ts tsvector;
UPDATE profiles SET ts = to_tsvector('english', ID || ' ' || FID || ' ' || coalesce(SURVEY,'') || ' ' || coalesce(PROFILE,'') || ' ' || coalesce(TYPE,'') || ' ' || coalesce(SOURCE,'') || ' ' || coalesce(NR_TRACES,'') || ' ' || coalesce(TRACE_SPACE_M,'') || ' ' || coalesce(LENGTH_M,'') || ' ' || coalesce(IMAGES,'') || ' ' || coalesce(COMMENTS,''));
これらの 2 つの列 (NR_TRACES と TRACE_SPACE_M) に何も含まれていない ts 列を更新すると、ts 列には値が入力されません。その後、両方の列を次のように更新したため、空であることがわかりました。
UPDATE profiles SET nr_traces = 10131, trace_space_m = 12.5 WHERE PROFILE = '30';
そして得た:
ERROR: invalid input syntax for type numeric: ""
と
ERROR: tsvector column "TS" does not exist
ただし、列 LENGTH_M は完全に入力されているため、「数値」型では、私が使用している方法では結合できないと言えます。以下のものも成功せずに使用しました:
coalesce(my-numeric-empty-column,'')
coalesce(my-numeric-empty-column,'')::numeric
入力された LENGTH_M 列を単独でテストすると、「」(空の) スペースを指す同じ結果が得られます。
psql:profiles.sql:146: ERROR: invalid input syntax for type numeric: ""
LINE 1: ... ' ' || TRACE_SPACE_M || ' ' || coalesce(LENGTH_M,'') || ' '...
^
そもそもこれらの 2 つの空の列にデータを入力せずに、これを回避するにはどうすればよいですか?
これに関するヒントをいただければ幸いです。事前に感謝します。