所以,我列出了在MySQL中迁移我们的过程或功能到PostgreSql的一些更改。
- (double Quote)在Postgresql中不表示文本,而是用来命名列,表等的情况敏感名称。因为这些在PostgreSQL中不敏感。而是用于文本。 例如。
select age from table1 where name = 'harry'; ( postgresql )
select age from table1 where name = "harry"; ( mysql )
- 常见的JSON从MySQL变为PostgreSQL包括: json_length mysql = json_array_length 使用:: JSON将文本变量转换为JSON JSON_EXTRACT = - >>操作员 json_unquote = trim(从ABC出发) 我们在PostgreSQL中也有JSON数据类型
- 如果我们在\ n,\ t等字符串中使用逃生字符。
E'\t hello \n World'
- find_in_set(值,数组)被替换为
value = ANY(string_to_array(array, ',')::BIGINT[])
- 插入忽略被冲突所取代。我们还可以在()冲突后分别指定唯一的列,但不包括所有唯一约束。同样,在重复的关键更新上,由“冲突” DO更新集进行了处理。排除了插入新行的点。
insert into t1(s1,s2)
select a,b from t2
on conflict do nothing;
insert into t1(s1,s2)
select a,b from t2
on conflict (any unique columns/columns ) do update set
s1 = EXCLUDED.a,
s2 = EXCLUDED.b;
-
在mySQL光标中,我们声明了继续使用变量的继续处理程序,并且有条件,如果变量等于1,我们将循环
但是在PostgreSQL中,两者都不支持,唯一的更改是在找不到光标后未找到语句。 。
-
光标中的循环可以在postgresql中具有名称
-
inst in low_count替换的und_rows()。
get diagnostics count = ROW_COUNT;
concat('Inserted records are ', count) into var_output;
- 对于例外 - 声明处理程序在PostgreSQL中不支持,但可以使用
declare
begin
statements;
exception
when condition [or condition...] then
handle_exception;
[when condition [or condition...] then
handle_exception;]
[when others then
handle_other_exceptions;
]
end;
- 在删除语句中,我们只能从源表中删除(除非将级联删除应用于子表上)。另外,第一个加入桌子后加入关键字,用使用。源表的联接列需要在Whewher子句中指定。 为我
delete from abc
using def
join efg on def.name = efg.name
where abc.id = def.objectid and abc.col1 = efg.col1;
-
在MySQL中未提供PostgreSQL中的枚举支持。所有枚举列应声明为文本或Varchar。
-
在更新语句中,我们只能更新源表,因为PostgreSQL中删除了列的表前缀。另外,第一个加入桌子后加入关键字,替换为“来自”。源表的联接列需要在Whewher子句中指定。 set子句是从子句开始之前。对于例如
update abc a
set
col1 = o.name
col2 = w.type
from def o
join fgh w on o.col3 = w.col3
where
a.addressid = o.id
and a.contactid = w.id;
-
instr(字符串,sub_string)被位置(字符串中的sub_string)代替。
-
创建表而不是null auto_increment使用时,生成的使用始终为身份
-
在PostgreSQL中创建表时无法创建索引,需要在新的SQL语句中明确创建索引。另外,无法在col(255)
之类的可变长度上创建索引
-
Drove临时表被置于下降表。适用于两种类型。
-
group_concat = string_agg(string, - separatorâ)
-
在信息_schema.columns中,column_type替换为data_type
-
使用唯一索引创建唯一的约束。因此,首先需要索引来创建约束。
-
curdate()被Current_date
替换
-
date_add()被date_var +任何东西替换。 [如果有整数,则添加天数,如果有间隔1周,则添加1周的时间]