PostgreSQL 과 SQLServer 의 차이 점 에 대해 말씀 드 리 겠 습 니 다.

5110 단어 PostgreSQLSQLServer
조건 부 조회-모호 일치
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 은 찾 을 수 없습니다.
order by
1.PostgreSQL 과 SQL Server 의 기본 order by 행동 은 일치 하지 않 습 니 다.
2.orderby 필드 가 null 이면 PostgreSQL 은 앞 에 놓 고 SQL Server 는 뒤에 놓 습 니 다.
다음 SQL 을 각각 PostgreSQL 과 SQL Server 에서 실행 합 니 다.

select * from t_user order by code desc;
PostgreSQL:

SQL Server:

알 아 낸 데이터 의 순서 가 다르다 는 것 을 알 수 있다.
어떤 경우 데이터 순서 가 두 데이터베이스 에서 일치 하도록 요구 하면 PostgreSQL 조회 SQL 에 nulls last 를 추가 하여 null 데 이 터 를 지연 시 킬 수 있 습 니 다.

select * from t_user order by code desc nulls last;
case when 을 사용 하여 SQL 을 통일 할 수도 있 습 니 다.

ORDER BY (case when xxx is null then '' else xxx 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';
추가:SqlServer 와 Postgresql 데이터베이스 필드 유형 대조 표
다음 과 같다.

 sqlserver      to    postgresql type
// "bigint",            "bigint"
//  "binary",             "bytea"
//  "bit",              "boolean"
//  "char",              "char"
//  "datetime",            "timestamp"  
//  "decimal",            "numeric"
//  "float",            "double precision"
//  "image",            "bytea"
//  "int",              "integer"
//  "money",            "numeric(19,4)"
//  "nchar",            "varchar"
//  "ntext",            "text"
//  "numeric",            "numeric"
//  "nvarchar",            "varchar"
//  "real",              "real"
//  "smalldatetime",        "timestamp"
//  "smallint",            "smallint"
//  "smallmoney",          "numeric(10,4)"
//  "text",              "text"
//  "timestamp",          "bigint"
//  "tinyint",            "smallint"
//  "uniqueidentifier",        "uniqueidentifier"
//  "varbinary",          "bytea"
//  "varchar",            "varchar"
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기