在以下语句中(PostgreSQL 11):
=> SELECT c cost FROM tt;
ERROR: syntax error at or near "cost"
LINE 1: SELECT c cost FROM tt;
Run Code Online (Sandbox Code Playgroud)
我收到一个错误。在字段表达式周围添加括号没有帮助 ( SELECT (c) cost FROM tt;)。但添加AS关键字就可以解决这个问题。
=> SELECT c AS cost FROM tt;
cost
------
1
...
Run Code Online (Sandbox Code Playgroud)
我意识到这cost是一个关键字,但我的印象是该AS关键字是可选的。
从语言的角度来看,为什么AS这里需要(或有帮助)关键字?这里的 PostgreSQL 行为是标准的还是在某处记录的?
还有其他情况AS需要使用关键字吗?
我在 Windows 7 上安装了 sql server 2008 然后我创建了一个数据库!2天后,我重新安装了windows并安装了sql server!现在我正在尝试附加我的数据库文件,但我遇到了以下错误。我认为这些文件就像一个附件,我无法附加它们。附加文件和未附加文件有什么区别?我怎样才能附加这个文件?请帮我。
错误文本:
标题:Microsoft SQL Server 管理工作室
服务器“AMIR-PC”的附加数据库失败。(Microsoft.SqlServer.Smo)
如需帮助,请单击:http : //go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600.1+((KJ_RTM).100402-1540+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates .FailedOperationExceptionText&EvtID=Attach+database+Server&LinkId=20476
附加信息:
执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)
无法打开物理文件“F:\Company.mdf”。操作系统错误 5:“5(访问被拒绝。)”。(Microsoft SQL Server,错误:5120)
如需帮助,请单击:http : //go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=5120&LinkId=20476
我正在尝试使用SQL Server Migration Assistant for MySQL将 MySQL 数据库迁移到 SQL Server 。转换架构并与 SQL Server 同步工作正常。
但是,单击“迁移数据”按钮后,SSMA 会在几秒钟后崩溃(SSMA 已停止工作)。这个问题的原因可能是什么?
我正在尝试查找 PostgreSQL可信过程语言 (PL)的列表,因为我经常需要在非超级用户环境中使用 PL。
但我找不到确切的答案。例如,这里的Postgres 文档表明 perl 有一个受信任和一个不受信任的 PL,这是一种我不太熟悉的语言。这里,它说TRUSTED关键字是您在创建 PL 语言时可以指定的内容,在某些情况下可能会被忽略。
但我也有(可能是错误的)印象,即某些 PL 语言仅受信任(例如 JavaScript PL/V8)或仅不受信任(Python)。其他帖子似乎表明可以调整 pg 以使用以下内容制作甚至是python一种可信赖的语言:
UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'plpythonu';
Run Code Online (Sandbox Code Playgroud)
我的问题比理论更实际。基本上:
是否可以将任何 PL 设置为可信和不可信?
如果不是,可以设置为受信任或受信任的特定语言是什么。
(“受信任”是指普通用户在 PL 语言中创建/执行/修改函数时应该具有有效的相同权限。另外,我使用的是 Postgres 9.x)
我想知道是否有一种既定的方法来测试两个 PostgreSQL 表/关系是否具有相同的结构。换句话说,如何测试它们是否彼此兼容,因为我可以对它们执行诸如UNION ALL和 之类的集合操作?EXCEPT
我在 DBA.SE 和其他地方搜索,只能找到有关查找两个表的内容是否不同的问题(例如,检查两个表在 PostgreSQL 中是否具有相同的内容),或者当兼容性已知时(例如,比较两个表)具有相同的结构,但成员数量不同)。但我有兴趣检查表结构的兼容性。
我使用的是 PostgreSQL 10.3,但符合标准的方式当然更好。
对于以下查询
SELECT sum(c)
FROM (SELECT 1 c WHERE false) t;
Run Code Online (Sandbox Code Playgroud)
我认为它需要零个数字的总和,因此应该返回0. (同样,我希望,例如,数组聚合函数返回零元素上的空数组)。
然而,它返回一个NULL(使用 PostgreSQL 11)。
=> SELECT sum(c) FROM (SELECT 1 c WHERE false) t;
sum
-----
(1 row)
Run Code Online (Sandbox Code Playgroud)
这在逻辑上对我来说没有意义。
为什么零数字的总和(对于任何数字类型)不为零?这是 NULL 返回行为标准吗?
或者也许我错过了一些东西。NULL在某些极端情况下,有什么理由必须求和?
我有以下 SP:
SELECT
moncallAdd.FirstListing,
DATEADD(MINUTE, mOnCallAdd.StartOnCallTime,
DATEADD(DAY, mOnCallAdd.StartOnCallDate, '12/31/1899')) AS OnCallStart,
DATEADD(MINUTE, mOnCallAdd.duration,
DATEADD(MINUTE, mOnCallAdd.StartOnCallTime,
DATEADD(DAY, mOnCallAdd.StartOnCallDate, '12/31/1899'))) AS OnCallEnd
FROM
mdr.dbo.mOnCallAdd
where DATEADD(DAY, mOnCallAdd.StartOnCallDate, '12/31/1899')= DATEADD(ms , 0 - DATEPART(ms , GETDATE()) ,
DATEADD(s , 0 - DATEPART(s , GETDATE()) , GETDATE())) and
mOnCallAdd.SchedName = 'arc im'
UNION
SELECT
moncallDelete.FirstListing,
DATEADD(MINUTE, mOnCallDelete.StartOnCallTime,
DATEADD(DAY, mOnCallDelete.StartOnCallDate, '12/31/1899')) AS OnCallStart,
DATEADD(MINUTE, mOnCallDelete.duration,
DATEADD(MINUTE, mOnCallDelete.StartOnCallTime,
DATEADD(DAY, mOnCallDelete.StartOnCallDate, '12/31/1899'))) AS OnCallEnd
FROM
mdr.dbo.mOnCallDelete
where DATEADD(DAY, mOnCallDelete.StartOnCallDate, '12/31/1899')= DATEADD(ms , 0 - DATEPART(ms , GETDATE()) …Run Code Online (Sandbox Code Playgroud) 我有一张桌子:
当我从表中选择所有内容时:
SELECT JSON_VALUE(LastReadings, '$.lastReadings."7-temp".value') as x FROM
(VALUES
(2,N'{"groups": [],"lastReadings": {"amir": {"name": "Ink","value":12.0},"7-temp": {"name": "Temperature","value":12}},"customId":null}'),
(3,N'{"groups": [],"lastReadings": {"amir": {"name": "Ink","value":12.0},"7-temp": {"name": "Temperature","value":32}},"customId":null}'),
(4,N'{"groups": [],"lastReadings": {"amir": {"name": "Ink","value":12.0},"7-temp": {"name": "Temperature","value":22}},"customId": null}'),
(5,N'{"groups": [],"lastReadings": {"amir": {"name": "Ink","value": 12.0},"7-temp": {"name": "Temperature","value":123}},"customId": null}')
)
[AmirTestTable](Id,LastReadings )
Run Code Online (Sandbox Code Playgroud)
我得到
+-----+
| x |
+-----+
| 12 |
| 32 |
| 22 |
| 123 |
+-----+
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试添加 where 子句时:
SELECT JSON_VALUE(LastReadings, '$.lastReadings."7-temp".value') as x
FROM
(VALUES
(2,N'{"groups": [],"lastReadings": {"amir": {"name": "Ink","value":12.0},"7-temp": {"name": "Temperature","value":12}},"customId":null}'),
(3,N'{"groups": …Run Code Online (Sandbox Code Playgroud) 我有一个包含两个表的数据库。每个表都有不同的结构,但它们共享很少的公共字段。
简化示例:
表1字段结构:
Field1, Field2, Field3, Field4
Run Code Online (Sandbox Code Playgroud)
表2字段结构:
Field1, Field4, Field3, Field5, Field6
Run Code Online (Sandbox Code Playgroud)
当然,我的数据库有更好的命名字段和更多的字段。如您所见,两个表都有 Field1(主密钥)、Field3 和 Field4。
现在我想知道是否有可能以某种方式将这两个表中的数据合并为一个,最好不要实际复制和复制数据(使用数据库关系或查询)。
第三个表应包含所有常见字段和一些其他字段(当没有可用数据或某些默认数据时为空白单元格)。
我知道从长远来看最好修改数据库结构,以便所有公共字段都存储在一个表中,所有其他字段都存储在其他关系表中,但此时我不允许对现有表进行任何更改因为我的老板担心这会导致现有系统崩溃。
有计划更新并最终将这些系统合并为一个(包括数据库重组),但在此之前我确实需要进行一些统计分析,因此我正在寻找可快速实施的解决方案。
性能对此并不重要,因为这只是一个临时解决方案,但仍然需要,因为我不想等待太长时间来检索数据,也不想对整个数据库系统造成任何显着的减速.
所以欢迎提出任何建议。
postgresql ×3
security ×2
sql-server ×2
aggregate ×1
functions ×1
json ×1
metadata ×1
ms-access ×1
sql-standard ×1
ssma ×1
t-sql ×1
union ×1