PostgreSQL和SQLServer的一些差異

2021-09-02 19:27:08 字數 3203 閱讀 2392

postgresql和sql server的模糊匹配like是不一樣的,postgresql的like是區分大小寫的,sql server不區分。

測試如下:

//構造資料sql

create

table t_user (

id integer

primary

key,

name varchar(50

)not

null

, code varchar(10

));insert

into t_user values(1

,'zhangsan'

,'77771');

insert

into t_user values(2

,'lisi'

,null

);

將如下sql分別在postgresql和sql server中執行:

select

*from t_user where name like

'%zhang%'

;

postgresql結果:

sql server結果:

如果想讓postgresql的like也不區分大小寫的話,可以使用ilike

select

*from t_user where name ilike '%zhang%'

;

或者使用lower或者upper都轉換成小寫或者大寫再模糊匹配,這種方式的sql兩種資料庫都相容。

select

*from t_user where upper(name)

like upper(

'%zhang%');

select

*from t_user where lower(name)

like lower(

'%zhang%'

);

postgresql在做條件查詢的時候是強型別校驗的,但是sql server是弱型別。

將如下sql分別在postgresql和sql server中執行:

select

*from t_user where code =

77771

;

code是乙個varchar型別的資料。

postgresql結果:

sql server結果:

sql server的查詢如果末尾有空白的話,sql server會忽略但是postgresql不會。

將如下sql分別在postgresql和sql server中執行:

select

*from t_user where code =

'77771 '

;

postgresql結果:

sql server結果:

sql server是能查出資料的,但是postgresql查不出來。

1.postgresql和sql server的預設order by行為是不一致的。

2.order by的字段如果是null,postgresql會將其放在前面,sql server則將其放在後面。

將如下sql分別在postgresql和sql server中執行:

可以看出,查出來的資料的順序是不同的。

某些情況下如果要求資料順序在兩個資料庫中要一致的話,可以在postgresql的查詢sql中增加nulls last來讓null資料滯後。

select

*from t_user order

by code desc nulls last

;

也可以使用case when來統一sql:

orderby(

case

when *** is

null

then

''else *** end

)desc

;

sql server使用" + 「號來拼接字串,並且在2012版本之前不支援concat函式。

postgresql使用」 || "來拼接字串,同時支援concat函式。

//sql server

select

count

(name)

from sys.

tables

where

type

='u'

and name=

't_user'

;//postgresql

select

count

(table_name)

from information_schema.

tables

where table_name=

't_user'

;

Oracle使用dblink連線SqlServer

使用場景 當你需要從oracle資料庫上訪問另一台sqlserver資料庫的資料時,oracle提供了乙個工具 gateways。通過這個工具,你可以建立dblink來連線sqlserver或其他不同公司的資料庫 取決於你安裝時的選項。安裝gateways後,使用下列2種方式可建立dblink 方式...

解除安裝和安裝postgresql

因為postgresql10增強了並行查詢,而postgresql9.6 並行只支援了一部分,現在需要解除安裝pg9.6然後安裝pg10 注意 centos 7 通過yum方式解除安裝和安裝 root 107 rpm qa grep postgresql postgresql96 9.6.10 1p...

postgresql安裝和使用

參考 sudo apt get update sudo apt get install postgresql postgresql client pgadmin3安裝完畢後,系統會建立乙個資料庫超級使用者 postgres,密碼為空。sudo i u postgres這時使用以下命令進入 postg...