각 데이터베이스별 문자열은 연결하는 함수 차이
MySQL: CONCAT( ) Oracle: CONCAT( ), || SQL Server: +
각 데이터베이스별 문자열은 연결하는 함수 차이
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