我是新人来的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”'表是空的。 –