SAP HANA 데이터 유형: 숫자, 문자열, 10진수

⚡ 스마트 요약

SAP HANA 데이터 유형은 각 열에 저장할 수 있는 데이터를 정의하며, 날짜/시간, 숫자, 부울, 문자열, 바이너리, 대형 객체 및 다중값 분류를 포함합니다.ping 특정 컬럼 스토어 유형으로.

  • 🗓️ 날짜 및 시간 유형: 날짜, 시간, 초, 타임스탬프는 유지하는 정밀도에서 차이가 있습니다.
  • 🔢 숫자 범위: TINYINT부터 BIGINT까지는 정수를 나타내고, DECIMAL, SMALLDECIMAL, REAL, DOUBLE은 소수를 나타냅니다.
  • 🔤 문자열: VARCHAR는 바이트를 저장하고 NVARCHAR는 유니코드 문자를 저장하며, 둘 다 최대 5000자로 제한됩니다.
  • 📦 대형 물체: BLOB, CLOB, NCLOB, TEXT 및 BINTEXT는 일반 컬럼에 저장하기에는 너무 큰 데이터를 저장합니다.
  • 🔍 검색 기능 활성화됨: TEXT, BINTEXT 및 SHORTTEXT는 컬럼 기반 테이블에서만 전체 텍스트 검색을 지원합니다.
  • 식별자: 구분자로 묶인 식별자는 큰따옴표 안에 있으며 모든 문자를 허용합니다. 구분자로 묶이지 않은 식별자는 반드시 문자로 시작해야 합니다.
  • 인용 규칙: 작은따옴표는 문자열 값을 구분하고 큰따옴표는 식별자를 구분합니다.

SAP HANA 데이터 유형

이번에 SAP HANA 데이터 유형 튜토리얼에서 배울 내용은 다음과 같습니다.

1) SAP HANA 데이터 유형 - SAP HANA 데이터 유형에는 날짜 시간, 숫자 데이터 유형, 부울, 문자열, 바이너리 데이터 유형 등이 포함됩니다.

2) SAP HANA 식별자 – 구분 식별자 및 구분 없는 식별자

데이터 유형 SAP HANA

In SAP 하나 데이터베이스, SQL 데이터 유형은 다음과 같습니다.

분류 하위 분류 SQL 데이터 유형 컬럼 저장소 유형 기본 형식
날짜 시간 유형 날짜 날짜 CS_DAYDATE 'YYYY-MM-DD'
Time TIME CS_SECONDTIME 'HH24:MI:SS'
두 번째 날짜 두 번째 날짜 CS_LONGDATE 'YYYY-MM-DD HH24:MI:SS'
타임 스탬프 타임 스탬프 CS_SECONDDATE 'YYYY-MM-DD HH24:MI:SS.FFn'
숫자 유형 작은 정수 타이닌트 CS_INT 8비트 부호 없는 정수, 범위는 0에서 255까지입니다.
작은 정수 스몰린트 CS_INT 16비트 부호 있는 정수, 범위: -32,768 ~ 32,767
정수 정수 CS_INT 32비트 부호 있는 정수, 범위: -2,147,483,648 ~ 2,147,483,647
큰 정수 빅인트 CS_FIXED(18,0) 64비트 부호 있는 정수, 범위: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
소수 십진수(p,s)
p-정밀도
S-스케일
CS_FIXED(ps,s) 정밀도 p의 범위는 1부터 38까지입니다.
척도 s의 범위는 0에서 p까지입니다. SAP HANA 10진수 데이터 유형입니다.
정밀도와 소수 자릿수를 지정하지 않으면 DECIMAL은 부동 소수점 XNUMX진수가 됩니다.
작은 소수 소문자 CS_SDFLOAT 부동소수점 십진수입니다. 정밀도와 스케일은 저장된 값에 따라 정밀도는 1~16, 스케일은 -369~368 범위 내에 있어야 합니다. SMALLDECIMAL은 열 저장소 테이블에만 지원됩니다.
실수 레알 CS_FLOAT 단정밀도 32비트 부동 소수점 숫자
Double 번호 더블 CS_더블 이중 정밀도 64비트 부동 소수점 숫자
흙손 플로트(n) CS_더블 32비트 또는 64비트 실수입니다. 여기서 n은 비트 수를 나타내며 1에서 53 사이의 값이어야 합니다.
부울 부울 부에 네 CS_INT 참, 거짓 및 알 수 없음(NULL).
문자열 가변 길이 문자열 VARCHAR (n) CS_STRING 이 HANA 문자열 길이 데이터 유형은 가변 길이 문자열이며, 'n'은 최대 길이를 바이트 단위로 지정하며 1에서 5000 사이의 정수입니다.
가변 길이 유니코드 문자 NVARCHAR(n) CS_STRING 가변 길이 유니코드 문자 집합 문자열, 여기서 최대 문자 길이를 나타내며 1에서 5000 사이의 정수입니다.
영숫자 문자 알파벳(n) CS_ALPHANUM 가변 길이 영숫자 문자. 여기서 n은 최대 길이를 나타내며 1~127 사이의 정수입니다.
짧은 텍스트 단축텍스트(n) CS_STRING 가변 길이 문자열로, 텍스트 검색 및 문자열 검색 기능을 제공합니다. 이 데이터 형식은 컬럼형 테이블에는 정의할 수 있지만, 행형 테이블에는 정의할 수 없습니다.
바이너리 유형 바이너리 텍스트 VARBINARY(n) CS_RAW 지정된 최대 길이(바이트)의 이진 데이터를 저장합니다. 여기서 n은 최대 길이를 나타내며 1에서 5000 사이의 정수입니다.
LOB 유형(대형 객체 유형) 바이너리 LOB 얼룩 CS_RAW 대량의 바이너리 데이터
캐릭터 LOB 클럽 CS_STRING ASCII 문자 데이터
유니코드 문자 LOB 엔클로브 CS_STRING 큰 유니코드 문자 객체
TEXT TEXT CS_STRING TEXT 데이터 유형은 텍스트 검색 기능을 제공합니다. 이 데이터 유형은 열 저장소 테이블에 대해 정의할 수 있지만 행 저장소 테이블에 대해서는 정의할 수 없습니다.
바이너리 텍스트 데이터 빈텍스트 CS_STRING BINTEXT 데이터 유형은 TEXT 데이터 유형과 유사하므로 텍스트 검색 기능을 지원하지만 바이너리 데이터 삽입이 가능합니다. 이 데이터 유형은 열 테이블에 대해 정의할 수 있지만 행 테이블에 대해서는 정의할 수 없습니다.
다중 값 유형 배열 정렬 각 요소가 정확히 하나의 위치와 관련된 동일한 데이터 유형의 값 컬렉션을 저장합니다. 배열에는 값이 없을 때처럼 NULL 값이 포함될 수 있습니다.

올바른 선택 SAP HANA 데이터 유형

위 표에는 이용 가능한 제품들이 나열되어 있습니다. 신중하게 선택하는 것이 더욱 중요합니다. SAP HANA는 디스크 기반 데이터베이스보다 메모리에 모든 컬럼이 상주하고, 크기가 큰 데이터 타입은 행마다 부족한 리소스를 소모하기 때문에 더 효율적입니다.

대부분의 결정에는 다음 네 가지 규칙이 적용됩니다.

  • 가장 작은 숫자 형식을 선택하세요. 가능한 값이 5개인 상태 플래그에는 INTEGER가 아닌 TINYINT가 필요합니다. 10억 행 규모의 테이블에서 그 차이는 기가바이트 단위의 메모리 사용량에 달합니다.
  • 절대로 실물이나 두 배로 된 돈을 보관하지 마십시오. 부동 소수점은 소수점을 정확하게 표현할 수 없으므로 합계가 통화 단위의 소수점 이하까지 오차가 발생할 수 있습니다. 정밀도와 소수점 자릿수를 명시적으로 지정하여 DECIMAL 함수를 사용하십시오.
  • VARCHAR보다는 NVARCHAR를 사용하는 것이 좋습니다. VARCHAR는 바이트 단위로, NVARCHAR는 문자 단위로 저장되므로 ASCII 형식이 아닌 텍스트는 VARCHAR에서 예기치 않게 잘릴 수 있습니다. SAP HANA 릴리스에서는 바로 이러한 이유 때문에 VARCHAR를 NVARCHAR처럼 취급합니다.
  • 날짜의 정확도를 요구 사항에 맞추십시오. 달력상의 날짜에는 DATE, 하루 중 시간에는 SECONDDATE, 그리고 초 단위 미만의 정밀도가 필요한 경우에는 TIMESTAMP를 사용합니다. 정밀도가 높아질수록 각 행의 저장 공간이 늘어납니다.

대용량 객체 유형은 특히 주의해야 합니다. BLOB 또는 NCLOB 컬럼은 편리하지만 용량이 크고, TEXT 또는 SHORTTEXT 열을 사용한 텍스트 검색은 컬럼 스토어 테이블에서만 작동하므로 저장 방식 선택과 데이터 유형 선택은 밀접하게 관련되어 있습니다. 저장 옵션은 다음에서 다룹니다. SAP 하나SQL 튜토리얼.

SAP HANA 식별자

식별자는 이름을 나타내는 데 사용됩니다. SQL 명령문(예: 테이블 이름, 뷰 이름, 열 이름, 인덱스 이름, 동의어 이름, 프로시저 이름, 함수 이름 등)

에는 두 가지 유형의 식별자가 있습니다. SAP HANA: 구분 식별자와 구분되지 않은 식별자.

  • 구분 식별자 – 구분 기호로 묶입니다. Double “”를 인용합니다. 식별자에는 특수 문자를 포함한 모든 문자가 포함될 수 있습니다.
  • 구분되지 않은 식별자 – 구분되지 않은 식별자(테이블 이름, 열 이름)는 문자로 시작해야 하며 숫자나 밑줄 '_' 이외의 기호를 포함할 수 없습니다.

아래와 같이 구분 기호에 두 가지 유형의 따옴표가 있습니다.

  • 작은따옴표(' ') – 문자열을 구분하는 데 사용됩니다.
  • Double 따옴표(" ")– 식별자를 구분하는 데 사용됩니다.

⚠️ 경고: 구분 기호 없이 입력된 식별자는 객체 생성 시 대문자로 변환됩니다. 예를 들어, employee라는 이름으로 테이블을 생성한 후 소문자로 "employee"를 선택하여 데이터를 조회하면 저장된 이름이 EMPLOYEE이기 때문에 오류가 발생합니다. 따라서 큰따옴표를 아예 사용하지 않거나, 사용하더라도 일관성 있게 사용해야 합니다.

데이터 유형 변환 및 일반적인 오류

SAP HANA는 호환되는 유형 간 변환을 자동으로 수행하지만, 암시적 변환은 잘못된 결과와 느린 쿼리의 숨겨진 원인입니다. 명시적 변환은 의도를 명확히 보여줍니다.

두 가지 함수가 이 작업을 수행합니다. CAST는 값을 지정된 유형으로 변환하고, TO_DATE, TO_VARCHAR, TO_DECIMAL 및 관련 함수는 선택적 형식 문자열을 사용하여 변환합니다.

-- Explicit conversion with CAST
SELECT CAST('1234' AS INTEGER) FROM DUMMY;

-- Conversion with an explicit format
SELECT TO_DATE('2026-07-21', 'YYYY-MM-DD') FROM DUMMY;

-- Number to string with fixed decimals
SELECT TO_DECIMAL(1234.5678, 10, 2) FROM DUMMY;

대부분의 변환 문제는 다음 네 가지 오류로 인해 발생합니다.

  1. 숫자 오버플로. SMALLINT에 40000을 삽입하면 부호 있는 범위가 32,767에서 끝나기 때문에 오류가 발생합니다. 오류 메시지에는 값이 아닌 열 이름이 표시되므로 먼저 정의를 확인하십시오.
  2. 문자열 잘림. 지정된 길이보다 긴 텍스트를 로드하면 텍스트를 조용히 잘라내는 대신 오류가 발생합니다. 문자 수는 NVARCHAR에 대해, 바이트 수는 VARCHAR에 대해 계산합니다.
  3. 날짜 형식이 잘못되었습니다. TO_DATE 함수에 잘못된 형식의 문자열을 전달하면 오류가 발생합니다. 세션 기본값을 사용하는 대신 항상 형식 마스크를 제공하십시오.
  4. WHERE 절에서의 암시적 형변환. 문자열 열을 숫자 열과 비교하면 모든 행에서 변환이 발생하므로 효율적인 필터링이 불가능합니다. 열 대신 상수를 변환하세요.

이 필터에서 사용되는 비교 기호는 다음에서 다룹니다. SAP HANA 연산자그리고 더 넓은 플랫폼에서 SAP HANA 튜토리얼 시리즈.

자주 묻는 질문

VARCHAR는 바이트 단위로, NVARCHAR는 유니코드 문자 단위로 용량을 제한합니다. ASCII 문자가 아닌 문자가 포함될 수 있는 텍스트의 경우, 예기치 않게 잘리지 않으므로 NVARCHAR를 사용하는 것이 안전합니다.

대부분의 비즈니스 이벤트처럼 초 단위 정밀도로 충분한 경우에는 SECONDDATE를 사용하십시오. TIMESTAMP는 소수점 이하 초 단위까지 포함하므로 대규모 테이블의 각 행에 더 많은 저장 공간을 차지합니다.

예. 소스 파일을 분석하면 실제 값 범위, 길이 및 형식을 파악할 수 있으며, AI는 이를 바탕으로 기본값으로 과도하게 큰 값을 사용하는 대신 각 열에 대해 가장 작고 안전한 데이터 유형을 제안합니다.

예. 선언된 길이와 실제로 저장된 값을 비교하면 크기가 줄어들 수 있는 열을 파악할 수 있는데, 이는 HANA 테이블의 모든 열이 메모리에 저장되기 때문에 중요합니다.

TEXT, BINTEXT 및 SHORTTEXT는 텍스트 검색 기능을 제공합니다. 이 세 가지 모두 컬럼 기반 테이블에서만 사용할 수 있으며 행 기반 테이블에서는 정의할 수 없습니다.

이 게시물을 요약하면 다음과 같습니다.