SQL(12)
-
[MSSQL] VARCHAR(MAX) / NVARCHAR(MAX) 에러시
쿼리문을 @STR 변수에 담아서마지막에 SELECT @STR을 했는데@STR 문이 짤려서 나오며 에러가 나서 찾아봤다.확인해보니 @STR문이 아예 중간에 짤려서 저장되어있었다. 원인 : VARCHAR는 2^31-1 byteNVARCHAR는 2^30-1 byte까지 지원한다.(VARCHAR와 NVARCHAR의 차이 : VARCHAR는 바이트 수, NVARCHAR는 글자 수 기준이다. VARCHAR는 영어, 숫자는 1byte, 그 외는 2byte 처리한다. NVARCHAR는 모든 문자를 일괄적으로 2byte 처리한다.)저장범위는 넓지만 문제는VARCHAR(MAX)는 기본적으로 8000 byte 문자열이라고 잡힌다고 한다.MAX라고 썼지만 MAX가 아닌것임.. 해결방안 : 8000byte 가 넘는다면 넘어갈..
2024.11.01 -
[프로그래머스 / ORACLE] 카테고리 별 상품 개수 구하기
내 코드 SELECT SUBSTR(PRODUCT_CODE, 1, 2) CATEGORY, COUNT(*) PRODUCTS FROM PRODUCT GROUP BY SUBSTR(PRODUCT_CODE, 1, 2) ORDER BY 1 느낀점 회사에서는 MSSQL을 쓰지만 프로그래머스에는 MSSQL이 없어서 ORACLE을 쓰는데 가끔 이런 함수이용하는 문제들이 나오면 주춤한다. MSSQL에는 LEFT함수가 있지만 ORACLE에는 없기때문이다. 다양한 SQL언어를 사용하면서 이런 차이점들을 알아가는게 신기하기도 하고 불편하기도 하다. 하지만 용어가 다를뿐인지 기본 개념은 비슷비슷하기 때문에 혼란스럽지는 않다.
2023.12.29 -
[MSSQL]SMALLDATETIME과 DATETIME의 차이
1.정확도 DATETIME : 1/100초 SMALLDATETIME : 1분 2. 저장공간 DATETIME : 8byte SMALLDATETIME : 4byte 3. 범위 DATETIME : 1753.01.01~9999.12.31 SMALLDATETIME : 1900.01.01~2079.01.06 4. 형식 DATETIME : 1900-01-01 00:00:00.000 SMALLDATETIME : 1900-01-01 00:00:00
2023.10.22 -
[SQL] ORACLE, MSSQL, MYSQL에서 NULL값을 체크하는 함수
MSSQL은 ISNULL ORACLE은 NVL MYSQL은 IFNULL 을 사용한다. 왜 다 달라서 헷갈리게 하는걸까??
2023.10.22 -
[SQL] !=, <> 에 대하여
SQL에서는 값을 비교할때, 특정값이 아닌 경우에 WHERE에서 !=, 이 부정 연산자를 많이 사용한다. 성능에서는 차이가 없다고 한다. 마음껏 맘에 드는 방식을 골라 사용하면 되지만, ISO 표준에는 이 방식이 맞다고 한다.
2023.10.22 -
[ORACLE] COUNT()함수에 대하여
SELECT COUNT(*), COUNT(칼럼명), COUNT(DISTINCT 칼럼명) FROM 테이블 1. COUNT(*) : 전체 데이터의 개수를 반환 2. COUNT(칼럼명) : 칼럼명의 데이터 중 NULL 값을 제외한 개수를 반환 3. COUNT(DISTINCT 칼럼명) : 칼럼명의 데이터 중 중복을 제거하고 데이터 개수 반환 #GROUP BY로 묶은 데이터들의 각 개수를 구하고 싶을 때 SELECT 칼럼명, COUNT(칼럼명) FROM 테이블 GROUP BY 칼럼명 #COUNT함수 안에 CASE WHEN 을 사용하여 데이터를 원하는 대로 뽑을 수도 있다. 이 경우는 아직 해보지 않았기 때문에 어떤방식으로 사용하지 잘 모르겠다.
2023.10.22