我有一個使用NUMERIC類型的三列表。然而,其中兩個沒有任何東西(即空的)。這是代碼:「數字類型的輸入語法無效」,用於輸入「空白」
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,''));
因爲我更新我的TS具有對他們(NR_TRACES和TRACE_SPACE_M)沒有這兩列列,在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,'') || ' '...
^
我如何規避這沒有填充這兩個空列的第一個地方?
我會很感激任何提示,在此先感謝。
看起來您正在更新'numeric'列,而不是'tsvector'列。此外,要在SQL中引用大寫的TS名稱,則需要雙引號,例如' 「TS」'。 –
@MikeToews感謝Mike的回覆。實際上,ts列正在通過更新聲明進行填充。請參閱我的問題了解更多信息,我最近更新了它。 – Gery