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"
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redmine 데이터베이스를 MySQL에서 PostgreSQL로 마이그레이션 (보충)Redmine 의 Database 를 MySQL 로 운용하고 있었습니다만, MySQL 5.6 이상이나 MariaDB 에는 , , 이러한 티켓이 수년 동안 방치된 상황을 감안하여, PostgreSQL로 마이그레이션하기...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.