我正在使用PostgreSQL 9.3版本来创建数据库.
我有一些列列表的下表测试.
create table test
(
cola varchar(10),
colb varchar(10),
colc varchar(10),
cold varchar(10)
);
Run Code Online (Sandbox Code Playgroud)
现在我想在一些列上创建索引.
例如:
我想创建一个列聚集索引cola和colb.
我想创建一个列非聚集索引colc和cold.
正如我提到这个和这个,我才知道,有在PostgreSQL里没有聚集和非聚集索引.
我的问题:我可以使用什么类型的索引而不是PostgreSQL中的聚簇索引和非聚簇索引,它与集群索引和非聚簇索引的作用相同?
我有以下功能:
我通过使用加入其他数据库表来更新一个数据库表dblink().
我安装了:
create extension dblink;
Run Code Online (Sandbox Code Playgroud)
更多细节如下图所示:
CREATE OR REPLACE FUNCTION Fun_test
(
Table_Name varchar
)
RETURNS void AS
$BODY$
DECLARE
dynamic_statement varchar;
BEGIN
perform dblink_connect('port=5234 dbname=testdb user=postgres password=****');
dynamic_statement := 'With CTE AS
(
Select HNumber,JoiningDate,Name,Address
From '|| Table_Name ||'c
)
, Test_A
AS
(
Select Row_Number() over ( Partition by PNumber order by Date1 Desc,Date2 Desc) AS roNum,
Name,PNumber,Date1,Address
From dblink(
''Select distinct PNumber,
(
case when fname is null then '' else fname end || …Run Code Online (Sandbox Code Playgroud) 我有2个数据库DB1和DB2.
我有一个被称为View1存储在数据库中的视图DB2.现在我想ALTER VIEW从DB1数据库.
我的尝试:
ALTER VIEW DB2..View1
AS
SELECT * FROM DB2..Test;
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
'CREATE/ALTER VIEW'不允许将数据库名称指定为对象名称的前缀
我将以下字符串变量拆分为临时表.
示例:
DECLARE @Str VARCHAR(MAX) = '10000,200000'
Run Code Online (Sandbox Code Playgroud)
现在我希望它存储在#Temp表中.
像这样:
表: #Temp
Cola Colb
--------------
10000 200000
Run Code Online (Sandbox Code Playgroud) 我正在使用 PostgreSQL 9.3 版本。
由于表已更改(添加了更多列),我需要更改视图。
好!我尝试了以下对我不起作用的脚本:
ALTER VIEW View1 AS SELECT * FROM Table1;
Run Code Online (Sandbox Code Playgroud)
出现错误:
Syntax error near 'AS'
Run Code Online (Sandbox Code Playgroud) 我有一个查询,该查询使我在输出单元格中具有较大的输出值。但是问题是,对于阅读,我需要拖动列并查看值,并且在某个范围后,值不会显示,而是显示给我(...)。复制值后,我也无法获取整个值集。


问题:如何从输出中看到整个价值集?
我有带有字段的表Amount, Condition1, Condition2。
例子:
Amount Condition1 Condition2
----------------------------------
123 Yes Yes
234 No Yes
900 Yes No
Run Code Online (Sandbox Code Playgroud)
我想根据条件计算20%的金额:
如果 和Condition1都是Condition2Yes 则计算20%else 0。
我的尝试:我尝试使用条件自定义列,但无法在查询编辑器中AND添加。IF
我想在给定的时间戳中添加秒数。
例子:
给定时间:
Declare
t1 timestamp = '1900-01-01 02:00:00';
Run Code Online (Sandbox Code Playgroud)
现在我想20 seconds在给定的时间内添加一些内容。
在 SQL Server 中我使用过DATEADD. 但我搜索了一下,发现PostgreSQL没有提供这样的功能。
解决方案是什么?
我有要导入的文本文件,格式如下:
columA | columnB | columnC
-----------------------------------------
1 | A | XYZ
2 | B | XZ
3 | C | YZ
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法跳过第一行:
WITH CSV HEADER;
Run Code Online (Sandbox Code Playgroud)
在复制命令中,但在跳过第二行时卡住了。
我有一些表,GUID其名称是生成的。
例如:
我的表名称为:
FD962987-AA3E-441C-B608-2392B68A5287
508482AF-EFCF-41C1-B083-D51BF37C3590
Run Code Online (Sandbox Code Playgroud)
数据库中还有一些其他表。
我只想找到名称为 的表GUID。
我的尝试:
SELECT name
FROM sys.tables
WHERE LEN(tables.name) = 36
Run Code Online (Sandbox Code Playgroud)
上面的查询工作正常,但是当我有其他表(不是 GUID 名称)时,会显示具有相同长度的表名。