각 데이터베이스별 문자열은 연결하는 함수 차이

MySQL: CONCAT( )

Oracle: CONCAT( ), ||

SQL Server: +


로컬서버에서 멀쩡하게 동작하던 쿼리가 테스트 서버에 올라간 뒤에 동작하지 않는다.

테스트서버 로그를 볼 수 없어서 한참이나 해맸는데... 원인은 테이블이름에 들어간 대문자 하나 때문이였다.


Linux/Unix 계열에서는  table 과 database 명이 directory와 file 명이고 Linux/Unix 는 디렉토리와 파일에 접근할때 대, 소문자를 구분하므로 쿼리를 실행시킬때 테이블의 대소문자를 구분하게 된다. Window 환경에서는 대소문자를 구분하지 않는다.



요약


원인 : MySQL 은 Linux / Unix 환경에서 테이블 이름 대소문자를 구분한다.

해결 : 쿼리 짤때 대소문자 확인을 잘하자. 




이번에 이직을 하면서 사용하던 데이터베이스가 Oracle -> MySQL로 바뀜.

물론 Oracle 이나 MySQL 이나 매우 큰 차이가 있지는 않지만 Oracle을 사용하면서 편하게 사용하던 것들이 없어서 당황

ROWNUM은 당연히 있겠거니 했는데 없었다.


그래서 찾아본 MySQL 에서 ROWNUM 사용하기


SELECT
    @ronwnum := @rownum+1 , t.*
FROM
    TABLE T , (SELECT @rownum := 0 ) R


+ Recent posts