我是新人來的SQL和Postgres,所以希望這不是很難找出你們所有人。在個案功能中使用職位功能 - PostgreSQL
我想一個CASE語句中使用定位功能,但我不斷收到錯誤 "ERROR: Syntax error at or near ""Project"". LINE 2: CASE WHEN position('(' IN "Project") >0 THEN".
我以前用過這個位置的功能和它工作得很好,所以我很困惑什麼問題在這裏。我也嘗試了表名,例如"xyztable.Project"
和"Project"
- 都沒有引號。
下面是完整的語句:
SELECT "Project",
CASE WHEN postion('(' IN "Project") >0 THEN
substring("Project",position('(' IN "Project")+1,position(')' IN "Project")-2)
CASE WHEN postion('('IN "Project") IS NULL THEN
"Project"
END
FROM "2015Budget";
正如我還沒有得到過去的這個聲明的第二行,如果有人看到任何會阻止這一說法無法正常運行,請隨時點出來。
新聲明:
SELECT "Project",
CASE
WHEN position('(' IN "Project") >0 THEN
substring("Project",position('(' IN "Project")+1,position(')' IN "Project")-2)
WHEN position('('IN "Project") IS NULL THEN
"Project"
END
FROM "2015Budget";
謝謝您的幫助!
啊,我明白了。猜猜我到這個時候太晚了:)。 – christopheralan88
我在原始問題中添加了新語句。但是,沒有行被返回,我得到兩列,Project和Case。相反,我想一個列中返回名爲Project Number,表示返回的項目列一個子如果項目字段包含「(」,否則,我希望它只是返回的項目現場。你知道如何做到這一點? – christopheralan88
這是返回第二列是因爲你在查詢的第一行列出了「Project」,你可以在'CASE'語句末尾加上'AS「項目號」'來命名另一列。零行,那是因爲你的' 「2015Budget」'表是空的。 –