小编MAK*_*MAK的帖子

转换语法以将总和转换为浮点数

使用PostgreSQL 9.3,我想将计算值转换为数据类型float.

我的第一次尝试:

SELECT float(SUM(Seconds))/-1323 AS Averag;
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

syntax error at or near "SUM"
Run Code Online (Sandbox Code Playgroud)

我的第二次尝试:

SELECT to_float(SUM(Seconds))/-1323 AS Averag;
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

 function to_float(bigint) does not exist
Run Code Online (Sandbox Code Playgroud)

sql postgresql casting type-conversion postgresql-9.3

38
推荐指数
3
解决办法
6万
查看次数

选择仅属于特定部门的用户

我有下表有两个字段,即a和b,如下所示:

create table employe
(
    empID varchar(10),
    department varchar(10)
);
Run Code Online (Sandbox Code Playgroud)

插入一些记录:

insert into employe values('A101','Z'),('A101','X'),('A101','Y'),('A102','Z'),('A102','X'),
             ('A103','Z'),('A103','Y'),('A104','X'),('A104','Y'),('A105','Z'),('A106','X');


select * from employe;
Run Code Online (Sandbox Code Playgroud)
empID   department
------------------
A101    Z
A101    X
A101    Y
A102    Z
A102    X
A103    Z
A103    Y
A104    X
A104    Y
A105    Z
A106    X
Run Code Online (Sandbox Code Playgroud)

注意:现在我想显示仅属于该部门Z且仅属于该部门的员工Y.因此,根据条件,A103应该显示唯一的员工,因为他只属于部门ZY.但员工A101不应该出现,因为他属于Z,X, and Y.

预期成果:

如果条件是:ZY则结果应该是:

empID
------
A103
Run Code Online (Sandbox Code Playgroud)

如果条件是:ZX则结果应该是:

empID
------ …
Run Code Online (Sandbox Code Playgroud)

sql sql-server postgresql sql-server-2008-r2

23
推荐指数
4
解决办法
2533
查看次数

从临时表插入表

我有下表:

示例:

create table test
(
 col1 varchar(10),
 col2 varchar(20),
 col3 varchar(30)
);
Run Code Online (Sandbox Code Playgroud)

现在我想按变量插入两个值,最后一个用#temp表插入.

#Temp:

create table #temp
(
  col3 varchar(30)
);
Run Code Online (Sandbox Code Playgroud)

#Temp:包含

col3
-----
A1
A2
A3
Run Code Online (Sandbox Code Playgroud)

插入测试表:

Declare @col1 varchar(10) = 'A'
Declare @col1 varchar(20) = 'B'
Declare @sql varchar(max)

SET @SQL = N'insert into test values('+@col1+','+@col2+',........); 
EXEC(@SQL)
/* How to insert `@col3` from #temp to test table*/
Run Code Online (Sandbox Code Playgroud)

预期成果:

col1   col2   col3
------------------
A      B      A1
A      B      A2
A      B      A3
Run Code Online (Sandbox Code Playgroud)

注意:变量值必须重复,直到#temp值插入到表测试中.

sql sql-server sql-server-2008-r2 sql-insert

14
推荐指数
1
解决办法
4万
查看次数

PostgreSQL 9.5:异常处理

我有一个名为employee的表,有两列,并为插入和更新操作创建了两个函数.这两个函数将通过另一个名为udf_3()的函数调用.

我想对第三个函数进行异常处理,该函数udf_3()应该向我提供哪个函数有错误的详细信息.

- :employee

create table employee
(
 id int,
 name varchar(10)
);
Run Code Online (Sandbox Code Playgroud)

- 功能 1:udf_1()用于插入.

create or replace function udf_1()
returns void as
$body$
begin

        insert into employee values(1,'Mak');
end;
$body$
language plpgsql;
Run Code Online (Sandbox Code Playgroud)

- 功能 2:udf_2()用于更新.

create or replace function udf_2()
returns void as
$body$
begin

        update employee
        set a_id = 99
        where name = 'Mak';

end;
$body$
language plpgsql;
Run Code Online (Sandbox Code Playgroud)

- 功能 3:udf_3()用于调用以上所有功能.

create or replace function udf_3()
returns …
Run Code Online (Sandbox Code Playgroud)

postgresql exception-handling

8
推荐指数
1
解决办法
2万
查看次数

带条件的动态数据透视表查询

我有下表,其中详细信息如下例所示.

示例:

表:测试

create table test
(
 cola varchar(10),
 colb varchar(10),
 colc varchar(10)
);
Run Code Online (Sandbox Code Playgroud)

插入:

insert into test values('111','222','A1');
insert into test values('111','333','A2');
insert into test values('111','344','A3');
insert into test values('111','444','A4');
insert into test values('767','222','A1');
insert into test values('767','333','A2');
insert into test values('767','344','A3');
insert into test values('5443','555','B1');
insert into tft values('8998','222','A1');
insert into tft values('8998','333','A2');    
Run Code Online (Sandbox Code Playgroud)

注意:现在我只想显示cola属于其colc值的记录A1,A2,A3.

预期成果:

cola   A1  A2  A3
------------------
111    1   1   1
767    1   1 …
Run Code Online (Sandbox Code Playgroud)

sql-server pivot sql-server-2008-r2

7
推荐指数
1
解决办法
6999
查看次数

PostgreSQL 9.3:获取星期几

我想从给定日期检索星期几。

例如日期是:2015-01-28那么它必须返回Wednesday

我不好的尝试:

select date_part('week',now()) as weekday;
Run Code Online (Sandbox Code Playgroud)

上面的脚本只给了我周数而不是星期几。

postgresql datepart postgresql-9.3

7
推荐指数
1
解决办法
4174
查看次数

PostgreSQL 9.3:STUFF 和 CHARINDEX 函数

我想检索给定字符串的某些部分。

以下是该字符串的示例:

示例:在 SQL Server 中

Declare @Names varchar = 'H1,H2,H3,'

SELECT STUFF(@Names,1,CHARINDEX(',',@Names,0),'');
Run Code Online (Sandbox Code Playgroud)

在引用此后:Postgresql 中 SQL Server 的 'stuff' 和 'for xml path('')'

String_agg在这种情况下无法帮助我。

postgresql postgresql-9.3

7
推荐指数
1
解决办法
2万
查看次数

PostgreSQL 9.3中的@@ ROWCOUNT

我想返回受最后一个语句影响的行数.

使用Microsoft SQL Server 2008 R2我这样做:

SELECT * FROM Test_table;

SELECT @@ROWCOUNT AS [Number Of Rows Affected];
Run Code Online (Sandbox Code Playgroud)

威尔会给出:

Number Of Rows Affected
-----------------------
10
Run Code Online (Sandbox Code Playgroud)

在PostgreSQL 9.3中怎么样?

postgresql postgresql-9.3

6
推荐指数
2
解决办法
8961
查看次数

PostgreSQL 9.3:如何将大写 UUID 插入表中

我有下表,其中只有 1 列,其id类型为UUID

桌子uuidtest

create table uuidtest
(
id uuid
);
Run Code Online (Sandbox Code Playgroud)

插入

我通过使用生成了 uuid uuid_generate_v4(),并将其大写并将其插入到表中。

尝试1:

insert into uuidtest values('{4B36AFC8-5205-49C1-AF16-4DC6F96DB982}');
Run Code Online (Sandbox Code Playgroud)

尝试2:

insert into uuidtest values('4B36AFC8-5205-49C1-AF16-4DC6F96DB982');
Run Code Online (Sandbox Code Playgroud)

现在看结果:

select * from uuidtest;
Run Code Online (Sandbox Code Playgroud)

输出

id
uuid
-------------------------------------
4b36afc8-5205-49c1-af16-4dc6f96db982
4b36afc8-5205-49c1-af16-4dc6f96db982
Run Code Online (Sandbox Code Playgroud)

我也尝试过更新:

update uuidtest
set id = upper(id::text)::uuid
Run Code Online (Sandbox Code Playgroud)

但是:输出保持不变:

id
uuid
-------------------------------------
4b36afc8-5205-49c1-af16-4dc6f96db982
4b36afc8-5205-49c1-af16-4dc6f96db982    
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.3

6
推荐指数
1
解决办法
2万
查看次数

如果SQL Server 2008 r2中存在,则删除列

我正在使用SQL Server 2008 R2。

我想删除表中已经存在的列,否则不抛出任何错误。

尝试过:

ALTER TABLE Emp 
DROP COLUMN IF EXISTS Lname;
Run Code Online (Sandbox Code Playgroud)

错误:

关键字“ IF”附近的语法不正确。

通过搜索,我知道该选项从2016年开始可用。

SQL Server 2008 R2中有哪些替代方案?

sql-server sql-server-2008-r2

6
推荐指数
1
解决办法
1万
查看次数