使用PostgreSQL 9.3,我想将计算值转换为数据类型float.
我的第一次尝试:
SELECT float(SUM(Seconds))/-1323 AS Averag;
Run Code Online (Sandbox Code Playgroud)
给我这个错误:
Run Code Online (Sandbox Code Playgroud)syntax error at or near "SUM"
我的第二次尝试:
SELECT to_float(SUM(Seconds))/-1323 AS Averag;
Run Code Online (Sandbox Code Playgroud)
给我这个错误:
Run Code Online (Sandbox Code Playgroud)function to_float(bigint) does not exist
我有下表有两个字段,即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应该显示唯一的员工,因为他只属于部门Z和Y.但员工A101不应该出现,因为他属于Z,X, and Y.
预期成果:
如果条件是:Z和Y则结果应该是:
empID
------
A103
Run Code Online (Sandbox Code Playgroud)
如果条件是:Z和X则结果应该是:
empID
------ …Run Code Online (Sandbox Code Playgroud) 我有下表:
示例:
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值插入到表测试中.
我有一个名为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) 我有下表,其中详细信息如下例所示.
示例:
表:测试
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) 我想从给定日期检索星期几。
例如日期是:2015-01-28那么它必须返回Wednesday
select date_part('week',now()) as weekday;
Run Code Online (Sandbox Code Playgroud)
上面的脚本只给了我周数而不是星期几。
我想检索给定字符串的某些部分。
以下是该字符串的示例:
示例:在 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在这种情况下无法帮助我。
我想返回受最后一个语句影响的行数.
使用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中怎么样?
我有下表,其中只有 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) 我正在使用SQL Server 2008 R2。
我想删除表中已经存在的列,否则不抛出任何错误。
尝试过:
ALTER TABLE Emp
DROP COLUMN IF EXISTS Lname;
Run Code Online (Sandbox Code Playgroud)
错误:
关键字“ IF”附近的语法不正确。
通过搜索,我知道该选项从2016年开始可用。
SQL Server 2008 R2中有哪些替代方案?