CHAR 스칼라 함수

CHAR 함수는 인자의 고정 길이 문자열 표현을 반환합니다.

CHAR 함수의 구문은 입력 인수의 데이터 유형에 따라 달라집니다. 다음 유형의 입력 인수가 허용됩니다.

정수에서 문자:

구문 다이어그램 읽기생략 시각적 구문 다이어그램CHAR( integer-expression)

십진수에서 문자:

구문 다이어그램 읽기생략 시각적 구문 다이어그램CHAR( decimal-expression,decimal-character)

부동 소수점-문자 변환:

구문 다이어그램 읽기생략 시각적 구문 다이어그램CHAR( floating-point-expression)

십진수 부동 소수점-문자:

구문 다이어그램 읽기생략 시각적 구문 다이어그램CHAR( 십진수 부동 소수점 표현식)

문자 대 문자:

구문 다이어그램 읽기생략 시각적 구문 다이어그램CHAR( character-expression,정수,CODEUNITS16CODEUNITS32OCTETS)

그래픽에서 문자:

구문 다이어그램 읽기생략 시각적 구문 다이어그램CHAR( graphic-expression,정수,CODEUNITS16CODEUNITS32)

날짜/시간에서 문자:

구문 다이어그램 읽기생략 시각적 구문 다이어그램CHAR( datetime-expression,ISOUSAEURJISLOCAL)

행 ID에서 문자:

구문 다이어그램 읽기생략 시각적 구문 다이어그램CHAR( 행-ID-표현식)

스키마는 SYSIBM입니다.

CHAR 함수는 다음 값 중 하나의 고정 길이 문자열 표현을 반환합니다

  • 첫 번째 인수가 SMALLINT, INTEGER 또는 BIGINT인 경우 정수
  • 첫 번째 인수가 십진수이면 십진수
  • 첫 번째 인수가 DOUBLE 또는 REAL인 경우 배정밀도 부동 소수점 수
  • 첫 번째 인수가 DECFLOAT인 경우 십진 부동 소수점 숫자
  • 첫 번째 인수가 어떤 유형의 문자열이든 문자열 값
  • 첫 번째 인자가 EBCDIC 또는 유니코드 그래픽 문자열인 경우 그래픽 문자열
  • 첫 번째 인수가 날짜, 시간 또는 타임스탬프인 경우 날짜/시간 값
  • 첫 번째 인수가 행 ID인 경우 행 ID 값

이 함수의 결과는 고정 길이 문자열(CHAR)입니다.

첫 번째 인수가 null이면 결과는 null 값입니다.

정수 - 문자
정수 표현식
내장 정수 데이터 유형(SMALLINT, INTEGER, BIGINT)의 값을 반환하는 표현입니다.

그 결과, SQL 정수 상수 형태의 고정 길이 문자열 표현이 됩니다. 결과는 인수의 값을 나타내는 데 사용할 수 있는 최소한의 문자 수에 공백이 추가된 것입니다. 결과는 인수 값을 나타내는 유효 숫자 n개 와 음수일 경우 앞에 마이너스 기호가 붙습니다. 양수 값은 숫자로 시작하며 항상 하나 이상의 공백 문자를 포함합니다. 선행 0은 포함되지 않습니다. 결과는 왼쪽으로 정렬됩니다

  • 인수가 작은 정수일 경우, 결과의 길이는 6입니다. 결과의 문자 수가 6보다 작으면 오른쪽에 공백으로 채워집니다.
  • 인수가 큰 정수이면 결과의 길이는 11이고, 결과의 문자 수가 11보다 작으면 결과의 오른쪽에 공백이 채워집니다.
  • 인수가 큰 정수이면 결과의 길이는 20입니다. 결과의 문자 수가 20보다 적으면 오른쪽에 공백이 추가됩니다.

양수 값은 항상 뒤에 공백이 하나 포함됩니다.

변경 시작결과의 CCSID는 애플리케이션 인코딩 체계에 따라 결정됩니다.변경 끝

10진수 - 문자
십진수 표현
내장된 십진수 데이터 유형의 값을 반환하는 표현입니다. 표현식의 값에 대해 다른 정밀도와 배율을 지정하려면, CHAR 함수를 적용하기 전에 DECIMAL 함수를 적용하십시오.
십진수 문자
결과 문자열에서 10진수 숫자를 구분하는 데 사용되는 1바이트 문자 상수를 지정합니다. 문자에는 숫자, 더하기 기호(+) 빼기 기호(-) 또는 공백이 포함되어서는 안 됩니다. 기본값은 마침표(.) 또는 쉼표(,)입니다. 선택에 영향을 미치는 요인에 대한 정보는 소수점 표현을 참조하십시오.

그 결과 첫 번째 인자의 고정 길이 문자열 표현이 만들어집니다. 그 결과, 인수의 값을 나타내는 데 사용할 수 있는 최소한의 문자 수를 구할 수 있습니다. 단, 뒤에 오는 0은 포함됩니다.

결과에는 소수점 이하 자릿수(p)가 포함되며, 여기서 p 는 음수인 경우 앞에 마이너스 기호가 있는 소수 표현식의 정밀도입니다. 양수 값은 숫자 또는 십진수로 시작하며, 항상 뒤에 공백이 하나 이상 포함됩니다. 선행 0은 리턴되지 않습니다. decimal-expression의 스케일이 영(0)인 경우, 10진 문자는 리턴되지 않습니다. 결과의 바이트 수가 정의된 결과의 길이보다 작으면, 결과의 오른쪽에 공백이 채워집니다.1

결과의 길이는 2 +p 입니다. 여기서 p십진수 표현의 정밀도입니다.

변경 시작결과의 CCSID는 문자열의 인코딩 체계 및 CCSID 규칙에 설명된 대로 결정됩니다.변경 끝

부동 소수점 - 문자
부동 소수점 표현
내장 부동 소수점 자료 유형(DOUBLE 또는 REAL)인 값을 리턴하는 표현식

그 결과, SQL 부동 소수점 상수 형식으로 인수의 고정 길이 문자열 표현이 만들어집니다. 인수가 음인 경우 결과의 첫 번째 문자는 음의 부호이며 그렇지 않은 경우 첫 번째 문자는 숫자입니다. 인수가 0인 경우 결과는 0E0입니다.

결과의 길이는 24입니다. 그 결과, 인수 값을 나타낼 수 있는 최소한의 문자 수를 포함합니다. 이때, 소수부는 0이 아닌 한 자리 숫자로 구성되고, 그 뒤에 마침표와 일련의 숫자가 옵니다.

결과의 문자 수가 24자 미만인 경우, 결과는 오른쪽에 공백이 채워집니다.

변경 시작결과의 CCSID는 문자열의 인코딩 체계 및 CCSID 규칙에 설명된 대로 결정됩니다.변경 끝

10진수 부동 소수점 - 문자
십진수 부동 소수점 표현식
내장된 십진 부동 소수점 데이터 유형(DECFLOAT)의 값을 반환하는 표현입니다.

그 결과, SQL 십진 부동 소수점 상수 형태의 인수의 고정 길이 문자열 표현이 만들어집니다.

결과 값이 무한대(Infinity), 무한대( sNaN, ) 또는 무한대( NaN, )이면 각각 'INFINITY', 'SNAN', 'NAN'이라는 문자열이 반환됩니다. DECFLOAT 특수 값 sNaN 은 문자열로 변환할 때 예외를 발생시키지 않습니다.

결과의 길이는 42입니다. 결과의 문자 수가 42보다 작으면 오른쪽에 공백으로 채워집니다. 끝에 0이 붙는 것은 중요합니다. 인수가 음수인 경우 결과의 첫 번째 문자는 마이너스 부호입니다. 그렇지 않으면 첫 번째 문자는 숫자이거나, 결과 값이 무한대(Infinity), 무한대( sNaN, ) 또는 무한대( NaN )인 경우 문자입니다.

변경 시작결과의 CCSID는 문자열의 인코딩 체계 및 CCSID 규칙에 설명된 대로 결정됩니다.변경 끝

문자 - 문자
문자 표현
내장 문자열의 값을 리턴하는 표현식입니다.
integer
결과로 발생하는 고정 길이 문자열의 길이 속성입니다. 값은 1-255 범위의 정수 상수여야 합니다.

길이가 지정되지 않으면 결과의 길이 속성은 최소 255이고, 문자 표현식의 길이 속성은 255입니다. 문자 표현 이 빈 문자열 상수이면 오류가 발생합니다.

만약에 CODEUNITS16 또는 CODEUNITS32 지정된 경우, 결과 문자열 의 길이 속성을 계산하는 방법에 대한 자세한 내용은 최종 결과의 길이 속성 결정을 참조하세요.

CODEUNITS16, CODEUNITS32, 또는 OCTETS
정수를 표현하는 데 사용되는 단위를 지정합니다. 문자 표현 이 비트 데이터로 정의된 문자열인 경우, CODEUNITS16 그리고 CODEUNITS32 지정할 수 없습니다.
CODEUNITS16
정수가 16비트 부호화 정수( UTF-16 ) 코드 단위로 표현됨을 지정합니다.
CODEUNITS32
정수가 32비트 부호화 정수( UTF-32 ) 코드 단위로 표현됨을 지정합니다.
OCTETS
정수가 바이트 단위로 표현되도록 지정합니다.
에 대한 자세한 정보는 CODEUNITS16, CODEUNITS32, 그리고 OCTETS, 문자열 단위 사양을 참조하십시오.

실제 길이는 결과의 길이 속성과 동일합니다. 문자-표현의 길이가 결과의 길이 속성보다 짧으면, 결과는 결과의 길이에 맞춰 공백으로 채워집니다. 문자-표현의 길이가 결과의 길이 속성보다 길면, 결과가 잘립니다. 잘린 문자가 모두 공백이 아닌 경우, 경고가 반환됩니다.

문자 표현 이 비트 데이터라면, 결과는 비트 데이터입니다. 그렇지 않으면 결과의 CCSID가 문자 표현식의 CCSID와 동일합니다.

그래픽 - 문자
그래픽 표현
내장 그래픽 문자열의 값을 반환하는 표현입니다.
integer
결과로 발생하는 고정 길이 문자열의 길이 속성입니다. 값은 1-255 범위의 정수 상수여야 합니다.

길이가 지정되지 않으면 결과의 길이 속성은 최소 255이고, 그래픽 표현식의 길이 속성은 255입니다. 그래픽 표현의 길이 속성은 (3 * 길이(그래픽 표현 ))입니다. 그래픽 표현 이 빈 문자열 상수이면 오류가 발생합니다.

만약에 CODEUNITS16 또는 CODEUNITS32 지정된 경우, 결과 문자열 의 길이 속성을 계산하는 방법에 대한 자세한 내용은 최종 결과의 길이 속성 결정을 참조하세요.

CODEUNITS16 또는 CODEUNITS32
정수를 표현하는 데 사용되는 단위를 지정합니다.
CODEUNITS16
정수가 16비트 부호화 정수( UTF-16 ) 코드 단위로 표현됨을 지정합니다.
CODEUNITS32
정수가 32비트 부호화 정수( UTF-32 ) 코드 단위로 표현됨을 지정합니다.
에 대한 자세한 정보는 CODEUNITS16 그리고 CODEUNITS32, 문자열 단위 사양을 참조하십시오.

실제 길이는 결과의 길이 속성과 동일합니다. 그래픽 표현의 길이가 결과의 길이 속성보다 짧으면, 결과는 결과의 길이에 맞춰 공백으로 채워집니다. 그래픽 표현의 길이가 결과의 길이 속성보다 길면 결과가 잘립니다. 잘린 문자가 모두 공백이 아닌 경우, 경고가 반환됩니다.

결과의 CCSID는 그래픽 표현의 그래픽 CCSID에 해당하는 혼합된 문자 CCSID입니다.

날짜 및 시간 - 문자
날짜-시간 표현
다음 내장 데이터 유형 중 하나인 표현식입니다
날짜
그 결과 두 번째 인자에 의해 지정된 형식으로 날짜를 문자열로 표현합니다. 두 번째 인수가 생략되면, DATE 프리컴파일러 옵션이 제공되는 경우, 그렇지 않으면 설치 패널의 DATE FORMAT 필드( DSNTIP4 )가 형식을 지정합니다. 형식이 LOCAL설치 패널의 필드 LOCAL DATE LENGTH DSNTIP4 는 결과의 길이를 지정합니다. 그렇지 않으면 결과의 길이는 10입니다.

LOCALDb2 하위 시스템에서 SQL 문을 실행하는 로컬 형식을 나타냅니다. 만약 LOCAL 형식을 사용하려면 해당 Db2 서브시스템에 날짜 종료 루틴이 설치되어 있어야 합니다.

두 번째 인수가 지정되었지만 유효한 값이 아닌 경우 오류가 발생합니다.

시간
그 결과 두 번째 인자에 의해 지정된 형식으로 시간의 문자열 표현이 만들어집니다. 두 번째 인수가 생략되면, TIME 프리컴파일러 옵션이 제공되는 경우, 그렇지 않으면 설치 패널의 TIME FORMAT 필드( DSNTIP4 )가 형식을 지정합니다. 형식이 LOCAL설치 패널의 현지 시간 길이 필드( DSNTIP4 )는 결과의 길이를 지정합니다. 그렇지 않으면 결과의 길이는 8입니다.

LOCALDb2 하위 시스템에서 SQL 문을 실행하는 로컬 형식을 나타냅니다. 만약 LOCAL 형식에 사용되므로, 해당 Db2 서브시스템에 시간 종료 루틴이 설치되어 있어야 합니다.

두 번째 인수가 지정되었지만 유효한 값이 아닌 경우 오류가 발생합니다.

시간대 없는 시간소인
결과는 시간소인의 문자열 표시입니다. Datetime-expression이 TIMESTAMP(0) 값이면, 결과의 길이는 19입니다. 날짜-시간 표현식이 TIMESTAMP (정수 ) 값이면, 결과의 길이는 20+정수 입니다. 그렇지 않으면 결과의 길이는 26입니다. 두 번째 인수는 지정하지 마십시오.
표준 시간대를 적용한 타임스탬프
그 결과, 타임스탬프의 문자열 표현이 생성되는데, 타임스탬프의 정확도를 나타내는 'n' 문자의 적절한 수와 함께, 서 식( yyyy-mm-dd-hh.mm.ss.nnnnnn ±th:tm) 이 지정됩니다. Datetime-expression이 TIMESTAMP(0) WITH TIME ZONE인 경우, 결과의 길이는 147입니다. Datetime-expression이 TIMESTAMP (integer ) WITH TIME ZONE인 경우, 결과의 길이는 148+integer 입니다. 두 번째 인수는 지정하지 마십시오.

결과의 CCSID는 함수가 호출된 컨텍스트에 따라 결정됩니다. 자세한 내용은 문자열의 인코딩 체계 및 CCSID 규칙을 참조하세요.

ISO, EUR, USA, JIS, 또는 LOCAL
결과 문자열의 날짜 또는 시간 형식을 지정합니다. 자세한 내용은 날짜/시간 값의 문자열 표현을 참고하세요.
행 ID에서 문자
행-ID-표현식
내장된 행 ID 데이터 유형의 값을 반환하는 표현입니다.

결과는 인수의 고정 길이 문자열 표현입니다. 그 결과 비트 데이터가 생성됩니다.

결과의 길이는 40입니다. 행 ID 표현의 길이가 40보다 작으면, 오른쪽에 16진수 0으로 채워져 40이 됩니다.

권장 사항 : 응용 프로그램의 이식성을 높이려면 첫 번째 인수가 숫자이거나 첫 번째 인수가 문자열이고 길이 인수가 지정된 경우 CAST 사양을 사용하십시오. 더 자세한 정보는 CAST 사양을 참고하세요.

참고

구문 대안:
CHAR9 첫 번째 인수가 십진수 데이터인 경우를 제외하고, CHAR의 대안으로 지정할 수 있습니다. 보다 CHAR9.

예:

예 1:
HIREDATE는 표본 테이블 DSN8C10.EMP 의 DATE 열입니다. 1976년 12월 15일 날짜를 나타내는 경우(직원 140번의 경우처럼), 다음 예는 문자열 변수 DATESTRING 에 문자열 값 '12/15/1976'을 반환합니다
   EXEC SQL SELECT CHAR(HIREDATE, USA)
     INTO :DATESTRING
     FROM DSN8C10.EMP
     WHERE EMPNO = '000140';
예 2:
호스트 변수 HOUR의 데이터 유형은 DECIMAL(6,0)이고, 값은 50000입니다. 시간으로 환산하면 5시간입니다. 어떤 표에서 STARTING이 TIME 열이라고 가정해 보겠습니다. 그런 다음, STARTING이 자정 17시간 30분 12초를 나타내는 경우, 다음 예제는 '10:30 PM' 값을 반환합니다
   CHAR(STARTING+:HOURS, USA)
예 3:
TABLEY 테이블의 TIMESTAMP 열에 RECEIVED가 정의되어 있다고 가정합니다. RECEIVED의 날짜 부분이 1997년 3월 10일을 나타내고 시간 부분이 자정 이후 6시간 15초를 나타내는 경우, 다음 예제는 문자열 값 ' 1997-03-10-06.00.15.000000 '를 반환합니다
   SELECT CHAR(RECEIVED)
     FROM TABLEY
     WHERE INTCOL = 1234;
예 4:
표 DSN8C10.EMP 의 샘플을 위해, 다음의 SQL 문은 CHAR(33)로 정의된 호스트 변수 AVERAGE를 평균 직원 급여의 문자열 표현으로 설정합니다.
   EXEC SQL SELECT CHAR(AVG(SALARY))
     INTO :AVERAGE
     FROM DSN8C10.EMP;

DEC31 를 사용하면, AVG를 십진수에 적용한 결과는 31자리의 정밀도를 가진 십진수입니다. 이렇게 큰 십진수 변수를 정의할 수 있는 유일한 호스트 언어는 어셈블러와 C입니다. 큰 십진수를 지원하지 않는 호스트 언어의 경우, 이 예제에 나와 있는 방법을 사용하십시오.

예 5:
샘플 테이블 DSN8C10.EMP 의 행에 대해, VARCHAR(15)로 정의된 LASTNAME 열의 값을 고정 길이 문자열로 반환하고 결과의 길이를 10자로 제한합니다.
   SELECT CHAR(LASTNAME,10)
     FROM DSN8C10.EMP;
성(LASTNAME)의 길이가 10자 이상인 행(뒤에 공백이 있는 경우 제외)의 경우, 값이 잘렸다는 경고가 반환됩니다.
예 6:
FIRSTNAME은 유니코드 테이블 T1 의 VARCHAR(12) 열입니다. 해당 값 중 하나는 6문자열 'Jürgen'입니다. FIRSTNAME이 'Function' 아래에 표시된 값을 가지고 있을 때, 결과는 'Returns' 아래에 표시됩니다:
 Function ...                    Returns ...
 -----------------------------------------------------------------------------------
 CHAR(FIRSTNAME,3,CODEUNITS32)   'Jür         ' -- x'4AC3BC722020202020202020'      
 CHAR(FIRSTNAME,3,CODEUNITS16)   'Jür      '    -- x'4AC3BC722020202020'
 CHAR(FIRSTNAME,3,OCTETS)        'Jü'           -- x'4AC3BC' 
예 7
샘플 테이블 DSN8C10.EMP 의 행에 대해, SMALLINT로 정의된 EDLEVEL 열의 값을 고정 길이 문자열로 반환합니다.
   SELECT CHAR(EDLEVEL)
     FROM DSN8C10.EMP;
EDLEVEL 18은 CHAR(6) 값 '18' (18 뒤에 공백 4개)로 반환됩니다.
예 8:
표 예제 DSN8C10.EMP 에서, SALARY 열은 DECIMAL(9,2)로 정의되어 있습니다. 52750.00 의 급여를 받는 직원들의 경우, 급여에 쉼표를 소수점 기호로 사용하여 고용 날짜와 급여를 반환하십시오(52750,00).
   SELECT HIREDATE, CHAR(SALARY, ',')
     FROM DSN8C10.EMP
     WHERE SALARY = 52750.00;
급여는 문자열 값 '52750,00'으로 반환됩니다.
예 9:
60000.00 에서 SALARY 열을 빼고 기본 십진수 문자로 급여를 반환하는 것을 제외하고 예제 8의 시나리오를 반복합니다.
   SELECT HIREDATE, CHAR (60000.00 - SALARY)
     FROM DSN8C10.EMP
     WHERE SALARY = 52750.00;
급여는 문자열 값 ' 7250.00 '로 반환됩니다.
예 10:
호스트 변수 SEASONS_TICKETS가 INTEGER로 정의되어 있고 값이 10000이라고 가정합니다. DECIMAL과 CHAR 함수를 사용하여 값을 문자열 ' 10000.00 '로 변경합니다.
   SELECT CHAR(DECIMAL(:SEASONS_TICKETS,7,2))
     FROM SYSIBM.SYSDUMMY1;
예 11:
T1 테이블의 열 COL1 와 COL2 가 모두 REAL로 정의되어 있고, T1 에 두 열의 값 7.1E+1 와 7.2E+2 가 포함된 단일 행이 있다고 가정합니다. 두 개의 열을 추가하고 결과를 문자열로 나타냅니다.
   SELECT CHAR(COL1 + COL2)
     FROM T1;
결과는 문자 값 ' ''1.43E2 '.입니다.
1 이 함수가 CHAR로 호출되고 BIF_COMPATIBILITY 서브시스템 파라미터가 V9_DECIMAL_VARCHAR 로 설정되어 있거나, 이 함수가 SYSCOMPAT_V9.CHAR 로 호출되는 경우, 결과는 CHAR9 기능.