我是PostgreSQL语法的新手。我有这个MS SQL Server查询来创建带有CASE的VIEW。
等效的Postgres查询是什么?
CREATE VIEW QUAD_TEXT AS
SELECT
GRAPH_ID,
SUBJECT,
SUBJECT_TYPE,
PREDICATE,
OBJECT_URI,
OBJECT_VALUE,
OBJECT_DATATYPE,
(CASE '"'+OBJECT_VALUE+'"' WHEN '""'
THEN
(CASE '<'+OBJECT_URI+'>' WHEN '<>'
THEN '""'
ELSE '<'+OBJECT_URI+'>' END)
ELSE
'"'+OBJECT_VALUE+'"'
+(CASE '"'+OBJECT_DATATYPE+'"' WHEN '""'
THEN '""'
ELSE (CASE
WHEN OBJECT_DATATYPE LIKE 'http%' THEN '^^<'+OBJECT_DATATYPE+'>'
ELSE '@'+OBJECT_DATATYPE+'' END)
END)
END) AS OBJECT,
STATUS
FROM TUPLES
WHERE ((CONVERT(bigint,CONVERT(VARBINARY(8),CONTEXT_INFO()))) & GA) > 0
AND VERSION = '0';
答案 0 :(得分:1)
+
进行字符串连接。||
进行字符串连接,或者,我们可以在Postgres中使用CONCAT
函数。
||
:'Post' || 'gres'
---> Postgres
CONCAT
:CONCAT('Post', 'gres')
---> Postgres
因此,在SQL查询中,您可以使用||
或CONCAT
代替+
有关更多详细信息,请查看以下链接:
答案 1 :(得分:0)
PostgreSQL符合SQL标准,并使用||
而不是+
来连接字符串。
因此,等效的PostgreSQL脚本为:
CREATE VIEW QUAD_TEXT AS
SELECT
GRAPH_ID,
SUBJECT,
SUBJECT_TYPE,
PREDICATE,
OBJECT_URI,
OBJECT_VALUE,
OBJECT_DATATYPE,
(CASE '"'||OBJECT_VALUE||'"' WHEN '""'
THEN
(CASE '<'||OBJECT_URI||'>' WHEN '<>'
THEN '""'
ELSE '<'||OBJECT_URI||'>' END)
ELSE
'"'||OBJECT_VALUE||'"'
||(CASE '"'||OBJECT_DATATYPE||'"' WHEN '""'
THEN '""'
ELSE (CASE
WHEN OBJECT_DATATYPE LIKE 'http%' THEN '^^<'||OBJECT_DATATYPE||'>'
ELSE '@'||OBJECT_DATATYPE||'' END)
END)
END) AS OBJECT,
STATUS
FROM TUPLES
WHERE ((CAST(CAST(current_setting('CONTEXT_INFO') as bit(8)) as bigint)) & GA) > 0
AND VERSION = '0';