표준 SQL의 문자열 함수

이 문자열 함수는 두 가지 값(STRING 및 BYTES 데이터 유형)에서 작동합니다. STRING 값은 올바르게 구성된 UTF-8이어야 합니다.

STRPOS와 같은 위치 값을 반환하는 함수는 이러한 위치를 INT64로 인코딩합니다. 값 1은 첫 번째 문자(또는 바이트)를 가리키고, 2는 두 번째를 가리키는 방식입니다. 값 0은 유효하지 않은 색인을 나타냅니다. STRING 유형에 작동할 경우 반환되는 위치는 문자 위치를 의미합니다.

모든 문자열 비교는 유니코드 규범적 등가와 관계없이 바이트 단위로 수행됩니다.

BYTE_LENGTH

BYTE_LENGTH(value)

설명

값 유형이 STRING인지 BYTES인지 관계없이 의 길이를 바이트로 반환합니다.

반환 유형

INT64


WITH example AS
  (SELECT "абвгд" AS characters, b"абвгд" AS bytes)

SELECT
  characters,
  BYTE_LENGTH(characters) AS string_example,
  bytes,
  BYTE_LENGTH(bytes) AS bytes_example
FROM example;

+------------+----------------+-------+---------------+
| characters | string_example | bytes | bytes_example |
+------------+----------------+-------+---------------+
| абвгд      | 10             | абвгд | 10            |
+------------+----------------+-------+---------------+

CHAR_LENGTH

CHAR_LENGTH(value)

설명

STRING의 길이를 문자로 반환합니다.

반환 유형

INT64


WITH example AS
  (SELECT "абвгд" AS characters)

SELECT
  characters,
  CHAR_LENGTH(characters) AS char_length_example
FROM example;

+------------+---------------------+
| characters | char_length_example |
+------------+---------------------+
| абвгд      |                   5 |
+------------+---------------------+

CHARACTER_LENGTH

CHARACTER_LENGTH(value)

설명

CHAR_LENGTH의 동의어입니다.

반환 유형

INT64


WITH example AS
  (SELECT "абвгд" AS characters)

SELECT
  characters,
  CHARACTER_LENGTH(characters) AS char_length_example
FROM example;

+------------+---------------------+
| characters | char_length_example |
+------------+---------------------+
| абвгд      |                   5 |
+------------+---------------------+

CODE_POINTS_TO_BYTES

CODE_POINTS_TO_BYTES(ascii_values)

설명

확장된 ASCII 코드 포인트의 배열(INT64의 ARRAY)을 취해 BYTES를 반환합니다.

BYTES를 코드 포인트의 배열로 변환하려면 TO_CODE_POINTS를 참조하세요.

반환 유형

BYTES

다음은 CODE_POINTS_TO_BYTES을 사용하는 기본적인 예입니다.

SELECT CODE_POINTS_TO_BYTES([65, 98, 67, 100]) AS bytes;

+-------+
| bytes |
+-------+
| AbCd  |
+-------+

다음 예에서는 ROT13(rotate-by-13 places) 알고리즘을 사용하여 문자열을 인코딩합니다.

SELECT CODE_POINTS_TO_BYTES(ARRAY_AGG(
  (SELECT
      CASE
        WHEN chr BETWEEN b'a' and b'z'
          THEN TO_CODE_POINTS(b'a')[offset(0)] +
            MOD(code+13-TO_CODE_POINTS(b'a')[offset(0)],26)
        WHEN chr BETWEEN b'A' and b'Z'
          THEN TO_CODE_POINTS(b'A')[offset(0)] +
            MOD(code+13-TO_CODE_POINTS(b'A')[offset(0)],26)
        ELSE code
      END
   FROM
     (SELECT code, CODE_POINTS_TO_BYTES([code]) chr)
  ) ORDER BY OFFSET)) AS encoded_string
FROM UNNEST(TO_CODE_POINTS(b'Test String!')) code WITH OFFSET;

+----------------+
| encoded_string |
+----------------+
| Grfg Fgevat!   |
+----------------+

CODE_POINTS_TO_STRING

CODE_POINTS_TO_STRING(value)

설명

유니코드 코드 포인트의 배열(INT64의 ARRAY)을 취해 STRING을 반환합니다.

문자열을 코드 포인트의 배열로 변환하려면 TO_CODE_POINTS를 참조하세요.

반환 유형

STRING

다음은 CODE_POINTS_TO_STRING을 사용하는 기본적인 예입니다.

SELECT CODE_POINTS_TO_STRING([65, 255, 513, 1024]) AS string;

+--------+
| string |
+--------+
| AÿȁЀ   |
+--------+

다음 예는 단어 집합에서 문자의 빈도를 계산합니다.

WITH Words AS (
  SELECT word
  FROM UNNEST(['foo', 'bar', 'baz', 'giraffe', 'llama']) AS word
)
SELECT
  CODE_POINTS_TO_STRING([code_point]) AS letter,
  COUNT(*) AS letter_count
FROM Words,
  UNNEST(TO_CODE_POINTS(word)) AS code_point
GROUP BY 1
ORDER BY 2 DESC;

+--------+--------------+
| letter | letter_count |
+--------+--------------+
| a      | 5            |
| f      | 3            |
| r      | 2            |
| b      | 2            |
| l      | 2            |
| o      | 2            |
| g      | 1            |
| z      | 1            |
| e      | 1            |
| m      | 1            |
| i      | 1            |
+--------+--------------+

CONCAT

CONCAT(value1[, ...])

설명

하나 이상의 을 하나의 결과로 연결합니다.

반환 유형

STRING 또는 BYTES


With Employees AS
  (SELECT
    "John" AS first_name,
    "Doe" AS last_name
  UNION ALL
  SELECT
    "Jane" AS first_name,
    "Smith" AS last_name
  UNION ALL
  SELECT
    "Joe" AS first_name,
    "Jackson" AS last_name)

SELECT
  CONCAT(first_name, " ", last_name)
  AS full_name
FROM Employees;

+---------------------+
| full_name           |
+---------------------+
| John Doe            |
| Jane Smith          |
| Joe Jackson         |
+---------------------+

ENDS_WITH

ENDS_WITH(value1, value2)

설명

2개의 을 취합니다. 두 번째 값이 첫 번째 값의 접미사인 경우 TRUE를 반환합니다.

반환 유형

BOOL


WITH items AS
  (SELECT "apple" as item
  UNION ALL
  SELECT "banana" as item
  UNION ALL
  SELECT "orange" as item)

SELECT
  ENDS_WITH(item, "e") as example
FROM items;

+---------+
| example |
+---------+
|    True |
|   False |
|    True |
+---------+

FORMAT

BigQuery는 문자열 형식 지정을 위한 FORMAT() 함수를 지원합니다. 이 함수는 C printf 함수와 비슷합니다. 이 함수는 0개 이상의 형식 지정자를 포함하는 형식 문자열에서 형식 지정자와 일치하는 추가 인수의 가변 길이 목록과 함께 STRING을 생성합니다. 예를 들면 다음과 같습니다.

설명 결과
단순 정수 format("%d", 10) 10
왼쪽 공백 패딩이 있는 정수 format("|%10d|", 11) |           11|
왼쪽 0 패딩이 있는 정수 format("+%010d+", 12) +0000000012+
STRING format("-%s-", 'abcd efg') -abcd efg-
FLOAT64 format("%f %E", 1.1, 2.2) 1.100000 2.200000E+00
DATE format("%t", date "2015-09-01") 2015-09-01
TIMESTAMP format("%t", timestamp "2015-09-01 12:34:56 America/Los_Angeles") 2015‑09‑01 19:34:56+00

FORMAT() 함수는 모든 유형과 값의 완전한 커스텀 설정이 가능한 형식 지정을 제공하지 않을 뿐 아니라 언어를 구분하는 형식 지정도 제공하지 않습니다.

유형에 커스텀 형식 지정이 필요한 경우, 먼저 FORMAT_DATE() 또는 FORMAT_TIMESTAMP() 같은 유형별 형식 함수를 사용하여 형식을 지정해야 합니다. 예를 들면 다음과 같습니다.

FORMAT("date: %s!", FORMAT_DATE("%B %d, %Y", date '2015-01-02'));

반환

date: January 02, 2015!

구문

FORMAT() 구문은 형식 문자열과 인수의 가변 길이 목록을 취해 STRING 결과를 생성합니다.

FORMAT(<format_string>, ...)

<format_string> 표현식에는 0개 이상의 형식 지정자가 포함될 수 있습니다. 각 형식 지정자는 % 기호로 도입되며, 하나 이상의 나머지 인수에 매핑되어야 합니다. 대부분의 경우, * 지정자가 있는 경우를 제외하고 일대일 매핑입니다. 예를 들어 %.*i는 길이 인수와 부호가 있는 정수 인수, 이렇게 2개의 인수에 매핑됩니다. 형식 지정자와 관련된 인수의 수가 인수의 수와 다르면 오류가 발생합니다.

지원되는 형식 지정자

FORMAT() 함수 형식 지정자는 다음 프로토타입 다음에 옵니다.

%[flags][width][.precision]specifier

지원되는 형식 지정자는 아래 표에 나와 있습니다. printf()의 확장은 기울임꼴로 되어 있습니다.

지정자 설명 유형
d 또는 i 10진수 392 INT64
o 8진수 610
INT64*
x 16진수 7fa
INT64*
X 16진수(대문자) 7FA
INT64*
f 10진 부동 소수점, 소문자 392.65
inf
NaN
NUMERIC
FLOAT64
F 10진 부동 소수점, 대문자 392.65
inf
NAN
NUMERIC
FLOAT64
e 과학적 표기법(가수/지수), 소문자 3.9265e+2
inf
NaN
NUMERIC
FLOAT64
E 과학적 표기법(가수/지수), 대문자 3.9265E+2
inf
NAN
NUMERIC
FLOAT64
g 가장 짧은 표현 사용, %e 또는 %f 392.65
FLOAT64
G 가장 짧은 표현 사용, %E 또는 %F 392.65
FLOAT64
s 문자의 문자열 sample STRING
t 값을 나타내는 인쇄 가능한 문자열을 반환합니다. 종종 인수를 STRING으로 변환하는 것과 유사하게 보입니다. 아래의 %t 섹션을 참조하세요. sample
2014‑01‑01
<any>
T 값의 유형과 유형이 비슷한 유효한 BigQuery 상수인 문자열을 생성합니다(더 넓거나 문자열일 수 있음). 아래의 %T 섹션을 참조하세요. 'sample'
b'bytes sample'
1234
2.3
date '2014‑01‑01'
<any>
% '%%'는 단일 '%'를 생성합니다. % 해당사항 없음

*음수 값이 사용되면 지정자 o, x, X는 오류를 생성합니다.

형식 지정자는 위의 지정자 프로토타입에서 식별된 하위 지정자를 선택적으로 포함할 수 있습니다.

이러한 하위 지정자는 다음 사양을 준수해야 합니다.

플래그
플래그 설명
- 지정된 필드 너비 내에서 왼쪽 정렬. 오른쪽 정렬이 기본값입니다(너비 하위 지정자 참조).
+ 양의 숫자여도 결과 앞에 플러스 또는 마이너스 부호(+ 또는 -)를 강제로 놓습니다. 기본적으로 음의 숫자만 앞에 - 부호가 옵니다.
<space> 부호를 쓰지 않는 경우, 빈 공백이 값 앞에 삽입됩니다.
# o, x 또는 X 지정자와 함께 사용됩니다. 0과 다른 값 앞에 각각 0, 0x 또는 0X가 옵니다.
0 패딩이 지정된 경우 공백 대신 0으로 숫자를 왼쪽 패딩합니다(너비 하위 지정자 참조).
'

적절한 그룹화 문자를 사용하여 정수의 형식을 지정합니다. 예를 들면 다음과 같습니다.

  • FORMAT("%'d", 12345678)12,345,678을 반환합니다.
  • FORMAT("%'x", 12345678)bc:614e를 반환합니다.
  • FORMAT("%'o", 55555)15,4403을 반환합니다.
  • 이 플래그는 10진수, 16진수, 8진수 값에만 관련됩니다.

플래그는 순서에 상관없이 지정할 수 있습니다. 중복 플래그는 오류가 아닙니다. 일부 요소 유형과 관련이 없는 플래그는 무시됩니다.

너비
너비 설명
<number> 인쇄할 최소 문자 수입니다. 인쇄할 값이 이 숫자보다 짧으면 결과가 빈 공백으로 패딩됩니다. 결과가 더 크더라도 값은 잘리지 않습니다.
* 너비가 형식 문자열에서 지정되지 않고 형식을 지정해야 하는 인수 앞에 오는 추가 정수 값 인수로 지정됩니다.
정밀도
정밀도 설명
.<number> 정수 지정자(d, i, o, u, x, X)의 경우: 정밀도는 써야 할 최소 자릿수를 지정합니다. 써야 할 값이 이 숫자보다 짧으면 결과는 후행 0으로 패딩됩니다. 결과가 더 길더라도 값은 잘리지 않습니다. 정밀도가 0이면 0 값에 쓰이는 문자가 없음을 뜻합니다. a, A, e, E, f, F 지정자의 경우: 소수점 아래에 인쇄할 자릿수입니다(기본값은 6입니다).
.* 정밀도가 형식 문자열에서 지정되지 않고 형식을 지정해야 하는 인수 앞에 오는 추가 정수 값 인수로 지정됩니다.

%t 및 %T 동작

%t%T 형식 지정자는 모든 유형에 정의됩니다. 너비, 정밀도, 플래그는 %s에 대해 동작하는 것처럼 동작합니다. width는 최소 너비이고 STRING은 해당 크기로 패딩되며, precision은 표시할 콘텐츠의 최대 너비이고 STRING은 너비로 패딩되기 전에 해당 크기로 잘립니다.

%t는 항상 읽을 수 있는 값 형식이어야 합니다.

%T는 항상 더 넓은 숫자 유형과 같은 비슷한 유형의 유효한 SQL 리터럴입니다. 유한하지 않은 부동 소수점 값의 특수한 경우를 제외하고 리터럴에는 변환 또는 유형 이름이 포함되지 않습니다.

STRING은 다음과 같이 형식 지정됩니다.

유형 %t %T
모든 유형의 NULL NULL NULL
INT64
123 123
NUMERIC 123.0(항상 .0 포함) NUMERIC "123.0"
FLOAT64 123.0(항상 .0 포함)
123e+10
inf
-inf
NaN
123.0(항상 .0 포함)
123e+10
CAST("inf" AS <type>)
CAST("-inf" AS <type>)
CAST("nan" AS <type>)
STRING 따옴표 없는 문자열 값 따옴표 붙은 문자열 리터럴
BYTES 따옴표 없는 이스케이프된 바이트
예: abc\x01\x02
따옴표 붙은 바이트 리터럴
예: b"abc\x01\x02"
DATE 2011-02-03 DATE "2011-02-03"
TIMESTAMP 2011-02-03 04:05:06+00 TIMESTAMP "2011-02-03 04:05:06+00"
ARRAY [value, value, ...]
여기서 값은 %t로 형식 지정됩니다.
[value, value, ...]
여기서 값은 %T로 형식 지정됩니다.
STRUCT (value, value, ...)
여기서 필드는 %t로 형식 지정됩니다.
(value, value, ...)
여기서 필드는 %T로 형식 지정됩니다.

특수한 경우:
0 필드: STRUCT()
1 필드: STRUCT(값)

오류 조건

형식 지정자가 유효하지 않거나 관련 인수 유형과 호환되지 않거나 잘못된 숫자 또는 인수가 제공되는 경우, 오류가 생성됩니다. 예를 들어 다음 <format_string> 표현식은 유효하지 않습니다.

FORMAT('%s', 1)
FORMAT('%')

NULL 인수 처리

NULL 형식 문자열에서 NULL 출력 STRING이 생성됩니다. 이 경우, 다른 모든 인수는 무시됩니다.

함수는 NULL 인수가 있는 경우 일반적으로 NULL 값을 생성합니다. 예를 들어 FORMAT('%i', <NULL expression>)NULL STRING을 출력으로 생성합니다.

하지만 몇 가지 예외가 있습니다. 형식 지정자가 %t 또는 %T(둘 다 CAST와 리터럴 값 의미 체계를 효과적으로 일치시키는 STRING을 생성)인 경우, NULL 값은 결과 STRING에서 'NULL'(따옴표 없이)을 생성합니다. 다음 함수는 예시입니다.

FORMAT('00-%t-00', <NULL expression>);

반환

00-NULL-00

추가 의미 체계 규칙

FLOAT64 값은 +/-inf 또는 NaN일 수 있습니다. 인수에 이 값 중 하나가 있는 경우, 형식 지정자 %f, %F, %e, %E, %g, %G, %t의 결과는 적절한 inf, -inf 또는 nan(또는 대문자로 된 동일한 결과)입니다. 이는 BigQuery가 이러한 값을 STRING으로 변환하는 방법에 부합합니다. %T의 경우, BigQuery는 문자열이 아닌 리터럴 표현이 없는 FLOAT64 값에 대해 따옴표 붙은 문자열을 반환합니다.

FROM_BASE32

FROM_BASE32(string_expr)

설명

base32로 인코딩된 입력 string_expr를 BYTES 형식으로 변환합니다. BYTES를 base32로 인코딩된 STRING으로 변환하려면 TO_BASE32를 사용하세요.

반환 유형

BYTES

SELECT FROM_BASE32('MFRGGZDF74======') AS byte_data;

+-----------+
| byte_data |
+-----------+
| abcde\xff |
+-----------+

FROM_BASE64

FROM_BASE64(string_expr)

설명

base64로 인코딩된 입력 string_expr를 BYTES 형식으로 변환합니다. BYTES를 base64로 인코딩된 STRING으로 변환하려면 TO_BASE64를 사용하세요.

반환 유형

BYTES

SELECT FROM_BASE64('3q2+7w==') AS byte_data;

+------------------+
| byte_data        |
+------------------+
| \xde\xad\xbe\xef |
+------------------+

FROM_HEX

FROM_HEX(string)

설명

16진수로 인코딩된 STRING을 BYTES 형식으로 변환합니다. 입력 STRING에 범위(0..9, A...F, a..f)를 벗어난 문자가 포함되어 있으면 오류를 반환합니다. 문자는 대소문자를 구분하지 않습니다. BYTES를 16진수로 인코딩된 STRING으로 변환하려면 TO_HEX를 사용하세요.

반환 유형

BYTES

WITH Input AS (
  SELECT '00010203aaeeefff' AS hex_str UNION ALL
  SELECT '0AF' UNION ALL
  SELECT '666f6f626172'
)
SELECT hex_str, FROM_HEX(hex_str) AS bytes_str
FROM Input;
+------------------+----------------------------------+
| hex_str          | bytes_str                        |
+------------------+----------------------------------+
| 0AF              | \x00\xaf                         |
| 00010203aaeeefff | \x00\x01\x02\x03\xaa\xee\xef\xff |
| 666f6f626172     | foobar                           |
+------------------+----------------------------------+

LENGTH

LENGTH(value)

설명

의 길이를 반환합니다. 반환되는 값은 STRING 인수의 경우 문자이고, BYTES 인수의 경우 바이트입니다.

반환 유형

INT64


WITH example AS
  (SELECT "абвгд" AS characters)

SELECT
  characters,
  LENGTH(characters) AS string_example,
  LENGTH(CAST(characters AS BYTES)) AS bytes_example
FROM example;

+------------+----------------+---------------+
| characters | string_example | bytes_example |
+------------+----------------+---------------+
| абвгд      |              5 |            10 |
+------------+----------------+---------------+

LPAD

LPAD(original_value, return_length[, pattern])

설명

pattern이 앞에 추가된 original_value로 구성된 을 반환합니다. return_length는 반환되는 값의 길이를 지정하는 INT64입니다. original_value가 BYTES인 경우 return_length는 바이트 수입니다. original_value가 STRING인 경우 return_length는 문자 수입니다.

pattern의 기본값은 빈 공백입니다.

original_valuepattern은 같은 데이터 유형이어야 합니다.

return_lengthoriginal_value 길이 이하일 경우, 이 함수는 return_length 값으로 잘린 original_value 값을 반환합니다. 예를 들어 LPAD("hello world", 7);"hello w"를 반환합니다.

original_value, return_length 또는 pattern이 NULL인 경우 이 함수는 NULL을 반환합니다.

이 함수는 다음과 같은 경우 오류를 반환합니다.

  • return_length가 음수인 경우
  • pattern이 비어 있는 경우

반환 유형

STRING 또는 BYTES

SELECT t, len, FORMAT("%T", LPAD(t, len)) AS LPAD FROM UNNEST([
  STRUCT('abc' AS t, 5 AS len),
  ('abc', 2),
  ('例子', 4)
]);
t len LPAD
abc 5 "  abc"
abc 2 "ab"
例子 4 "  例子"
SELECT t, len, pattern, FORMAT("%T", LPAD(t, len, pattern)) AS LPAD FROM UNNEST([
  STRUCT('abc' AS t, 8 AS len, 'def' AS pattern),
  ('abc', 5, '-'),
  ('例子', 5, '中文')
]);
t len 패턴 LPAD
abc 8 def "defdeabc"
abc 5 - "--abc"
例子 5 中文 "中文中例子"
SELECT FORMAT("%T", t) AS t, len, FORMAT("%T", LPAD(t, len)) AS LPAD FROM UNNEST([
  STRUCT(b'abc' AS t, 5 AS len),
  (b'abc', 2),
  (b'\xab\xcd\xef', 4)
]);
t len LPAD
b"abc" 5 b"  abc"
b"abc" 2 b"ab"
b"\xab\xcd\xef" 4 b" \xab\xcd\xef"
SELECT
  FORMAT("%T", t) AS t,
  len,
  FORMAT("%T", pattern) AS pattern,
  FORMAT("%T", LPAD(t, len, pattern)) AS LPAD
FROM UNNEST([
  STRUCT(b'abc' AS t, 8 AS len, b'def' AS pattern),
  (b'abc', 5, b'-'),
  (b'\xab\xcd\xef', 5, b'\x00')
]);
t len 패턴 LPAD
b"abc" 8 b"def" b"defdeabc"
b"abc" 5 b"-" b"--abc"
b"\xab\xcd\xef" 5 b"\x00" b"\x00\x00\xab\xcd\xef"

LOWER

LOWER(value)

설명

STRING 인수의 경우 원래 문자열에서 모든 알파벳 문자를 소문자로 변환하여 반환합니다. 소문자와 대문자 간의 매핑은 계정 언어별 매핑을 고려하지 않고 유니코드 문자 데이터베이스에 따라 수행됩니다.

BYTES 인수는 ASCII 텍스트로 취급되며 127보다 큰 모든 바이트는 그대로 유지됩니다.

반환 유형

STRING 또는 BYTES


WITH items AS
  (SELECT
    "FOO" as item
  UNION ALL
  SELECT
    "BAR" as item
  UNION ALL
  SELECT
    "BAZ" as item)

SELECT
  LOWER(item) AS example
FROM items;

+---------+
| example |
+---------+
| foo     |
| bar     |
| baz     |
+---------+

LTRIM

LTRIM(value1[, value2])

설명

TRIM과 동일하지만 선행 문자만 제거합니다.

반환 유형

STRING 또는 BYTES


WITH items AS
  (SELECT "   apple   " as item
  UNION ALL
  SELECT "   banana   " as item
  UNION ALL
  SELECT "   orange   " as item)

SELECT
  CONCAT("#", LTRIM(item), "#") as example
FROM items;

+-------------+
| example     |
+-------------+
| #apple   #  |
| #banana   # |
| #orange   # |
+-------------+

WITH items AS
  (SELECT "***apple***" as item
  UNION ALL
  SELECT "***banana***" as item
  UNION ALL
  SELECT "***orange***" as item)

SELECT
  LTRIM(item, "*") as example
FROM items;

+-----------+
| example   |
+-----------+
| apple***  |
| banana*** |
| orange*** |
+-----------+

WITH items AS
  (SELECT "xxxapplexxx" as item
  UNION ALL
  SELECT "yyybananayyy" as item
  UNION ALL
  SELECT "zzzorangezzz" as item
  UNION ALL
  SELECT "xyzpearxyz" as item)

SELECT
  LTRIM(item, "xyz") as example
FROM items;

+-----------+
| example   |
+-----------+
| applexxx  |
| bananayyy |
| orangezzz |
| pearxyz   |
+-----------+

NORMALIZE

NORMALIZE(value[, normalization_mode])

설명

STRING value를 취해 정규화된 문자열로 반환합니다.

정규화는 2개의 문자열을 동등하게 만드는 데 사용됩니다. 정규화는 흔히 화면에서 동일하게 렌더링되는 두 문자열의 유니코드 코드 포인트가 서로 다른 상황에서 사용됩니다.

NORMALIZE는 네 가지 선택적 정규화 모드를 지원합니다.

이름 설명
NFC Normalization Form Canonical Composition 규범적 등가에 따라 문자를 분해하고 다시 구성합니다.
NFKC Normalization Form Compatibility Composition 호환성을 기준으로 문자를 분해한 다음 규범적 등가에 따라 다시 구성합니다.
NFD Normalization Form Canonical Decomposition 규범적 등가로 문자를 분해하고 여러 조합 문자를 특정 순서로 배열합니다.
NFKD Normalization Form Compatibility Decomposition 호환성을 기준으로 문자를 분해하고 여러 조합 문자를 특정 순서로 배열합니다.

기본 정규화 모드는 NFC입니다.

반환 유형

STRING

SELECT a, b, a = b as normalized
FROM (SELECT NORMALIZE('\u00ea') as a, NORMALIZE('\u0065\u0302') as b)
AS normalize_example;

+---+---+------------+
| a | b | normalized |
+---+---+------------+
| ê | ê | true       |
+---+---+------------+

다음 예는 서로 다른 공백 문자를 정규화합니다.

WITH EquivalentNames AS (
  SELECT name
  FROM UNNEST([
      'Jane\u2004Doe',
      'John\u2004Smith',
      'Jane\u2005Doe',
      'Jane\u2006Doe',
      'John Smith']) AS name
)
SELECT
  NORMALIZE(name, NFKC) AS normalized_name,
  COUNT(*) AS name_count
FROM EquivalentNames
GROUP BY 1;

+-----------------+------------+
| normalized_name | name_count |
+-----------------+------------+
| John Smith      | 2          |
| Jane Doe        | 3          |
+-----------------+------------+

NORMALIZE_AND_CASEFOLD

NORMALIZE_AND_CASEFOLD(value[, normalization_mode])

설명

STRING value를 취해 NORMALIZE와 동일한 작업을 수행하고, 대소문자를 구분하지 않는 연산의 경우, casefolding도 수행합니다.

NORMALIZE_AND_CASEFOLD는 네 가지 선택적 정규화 모드를 지원합니다.

이름 설명
NFC Normalization Form Canonical Composition 규범적 등가에 따라 문자를 분해하고 다시 구성합니다.
NFKC Normalization Form Compatibility Composition 호환성을 기준으로 문자를 분해한 다음 규범적 등가에 따라 다시 구성합니다.
NFD Normalization Form Canonical Decomposition 규범적 등가로 문자를 분해하고 여러 조합 문자를 특정 순서로 배열합니다.
NFKD Normalization Form Compatibility Decomposition 호환성을 기준으로 문자를 분해하고 여러 조합 문자를 특정 순서로 배열합니다.

기본 정규화 모드는 NFC입니다.

반환 유형

STRING

WITH Strings AS (
  SELECT '\u2168' AS a, 'IX' AS b UNION ALL
  SELECT '\u0041\u030A', '\u00C5'
)
SELECT a, b,
  NORMALIZE_AND_CASEFOLD(a, NFD)=NORMALIZE_AND_CASEFOLD(b, NFD) AS nfd,
  NORMALIZE_AND_CASEFOLD(a, NFC)=NORMALIZE_AND_CASEFOLD(b, NFC) AS nfc,
  NORMALIZE_AND_CASEFOLD(a, NFKD)=NORMALIZE_AND_CASEFOLD(b, NFKD) AS nkfd,
  NORMALIZE_AND_CASEFOLD(a, NFKC)=NORMALIZE_AND_CASEFOLD(b, NFKC) AS nkfc
FROM Strings;

+---+----+-------+-------+------+------+
| a | b  | nfd   | nfc   | nkfd | nkfc |
+---+----+-------+-------+------+------+
| Ⅸ | IX | false | false | true | true |
| Å | Å  | true  | true  | true | true |
+---+----+-------+-------+------+------+

REGEXP_CONTAINS

REGEXP_CONTAINS(value, regex)

설명

value가 정규 표현식 regex의 부분 일치 값인 경우 TRUE를 반환합니다. ^(텍스트 시작) 및 $(텍스트 끝)를 사용하여 완전 일치를 검색할 수 있습니다.

regex 인수가 유효하지 않으면 이 함수는 오류를 반환합니다.

반환 유형

BOOL

SELECT
  email,
  REGEXP_CONTAINS(email, r"@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+") AS is_valid
FROM
  (SELECT
    ["foo@example.com", "bar@example.org", "www.example.net"]
    AS addresses),
  UNNEST(addresses) AS email;

+-----------------+----------+
| email           | is_valid |
+-----------------+----------+
| foo@example.com | true     |
| bar@example.org | true     |
| www.example.net | false    |
+-----------------+----------+

# Performs a full match, using ^ and $.
SELECT
  email,
  REGEXP_CONTAINS(email, r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$")
    AS valid_email_address
FROM
  (SELECT
    ["foo@example.com", "bar@example.org", "www.example.net"]
    AS addresses),
  UNNEST(addresses) AS email;

+-----------------+---------------------+
| email           | valid_email_address |
+-----------------+---------------------+
| foo@example.com | true                |
| bar@example.org | true                |
| www.example.net | false               |
+-----------------+---------------------+

REGEXP_EXTRACT

REGEXP_EXTRACT(value, regex)

설명

value에서 정규 표현식 regex와 일치하는 첫 번째 하위 문자열을 반환합니다. 일치하는 항목이 없으면 NULL을 반환합니다.

정규 표현식에 캡처 그룹이 포함되어 있는 경우, 이 함수는 그 캡처 그룹으로 일치되는 하위 문자열을 반환합니다. 정규 표현식에 캡처 그룹이 포함되어 있지 않은 경우 이 함수는 일치하는 전체 하위 문자열을 반환합니다.

다음의 경우 오류를 반환합니다.

  • 정규 표현식이 유효하지 않은 경우
  • 정규 표현식에 캡처 그룹이 둘 이상 있는 경우

반환 유형

STRING 또는 BYTES


WITH email_addresses AS
  (SELECT "foo@example.com" as email
  UNION ALL
  SELECT "bar@example.org" as email
  UNION ALL
  SELECT "baz@example.net" as email)

SELECT
  REGEXP_EXTRACT(email, r"^[a-zA-Z0-9_.+-]+")
  AS user_name
FROM email_addresses;

+-----------+
| user_name |
+-----------+
| foo       |
| bar       |
| baz       |
+-----------+

WITH email_addresses AS
  (SELECT "foo@example.com" as email
  UNION ALL
  SELECT "bar@example.org" as email
  UNION ALL
  SELECT "baz@example.net" as email)

SELECT
  REGEXP_EXTRACT(email, r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.([a-zA-Z0-9-.]+$)")
  AS top_level_domain
FROM email_addresses;

+------------------+
| top_level_domain |
+------------------+
| com              |
| org              |
| net              |
+------------------+

REGEXP_EXTRACT_ALL

REGEXP_EXTRACT_ALL(value, regex)

설명

정규 표현식 regex와 일치하는 value의 모든 하위 문자열 배열을 반환합니다.

REGEXP_EXTRACT_ALL 함수는 중첩되지 않는 일치 항목만 반환합니다. 예를 들어 이 함수를 사용하여 banana에서 ana를 추출하면 하위 문자열이 2개가 아닌 1개만 반환됩니다.

반환 유형

STRING 또는 BYTES의 배열


WITH code_markdown AS
  (SELECT "Try `function(x)` or `function(y)`" as code)

SELECT
  REGEXP_EXTRACT_ALL(code, "`(.+?)`") AS example
FROM code_markdown;

+----------------------------+
| example                    |
+----------------------------+
| [function(x), function(y)] |
+----------------------------+

REGEXP_REPLACE

REGEXP_REPLACE(value, regex, replacement)

설명

정규 표현식 regex와 일치하는 value의 모든 하위 문자열이 replacement로 바뀌는 STRING을 반환합니다.

replacement 인수 내에 백슬래시로 이스케이프 처리된 숫자(\1 ~ \9)를 사용하여 해당 괄호로 묶인 그룹과 일치하는 텍스트를 regex 패턴으로 삽입할 수 있습니다. 일치하는 전체 텍스트를 참조하려면 \0을 사용합니다.

REGEXP_REPLACE 함수는 중첩되지 않는 일치 항목만 바꿉니다. 예를 들어, banana 내부의 ana를 바꾸면 2개가 아니라 1개만 바뀝니다.

regex 인수가 유효한 정규 표현식이 아닌 경우 이 함수는 오류를 반환합니다.

반환 유형

STRING 또는 BYTES


WITH markdown AS
  (SELECT "# Heading" as heading
  UNION ALL
  SELECT "# Another heading" as heading)

SELECT
  REGEXP_REPLACE(heading, r"^# ([a-zA-Z0-9\s]+$)", "<h1>\\1</h1>")
  AS html
FROM markdown;

+--------------------------+
| html                     |
+--------------------------+
| <h1>Heading</h1>         |
| <h1>Another heading</h1> |
+--------------------------+

REPLACE

REPLACE(original_value, from_value, to_value)

설명

original_value에서 발견된 모든 from_valueto_value로 바꿉니다. from_value가 비어 있으면 값이 바뀌지 않습니다.

반환 유형

STRING 또는 BYTES


WITH desserts AS
  (SELECT "apple pie" as dessert
  UNION ALL
  SELECT "blackberry pie" as dessert
  UNION ALL
  SELECT "cherry pie" as dessert)

SELECT
  REPLACE (dessert, "pie", "cobbler") as example
FROM desserts;

+--------------------+
| example            |
+--------------------+
| apple cobbler      |
| blackberry cobbler |
| cherry cobbler     |
+--------------------+

반복

REPEAT(original_value, repetitions)

설명

반복되는 original_value로 구성된 을 반환합니다. repetitions 매개변수는 original_value를 반복하는 횟수를 지정합니다. original_value 또는 repetitions가 NULL이면 NULL을 반환합니다.

repetitions 값이 음수인 경우 이 함수는 오류를 반환합니다.

반환 유형

STRING 또는 BYTES

SELECT t, n, REPEAT(t, n) AS REPEAT FROM UNNEST([
  STRUCT('abc' AS t, 3 AS n),
  ('例子', 2),
  ('abc', null),
  (null, 3)
]);
t n 반복
abc 3 abcabcabc
例子 2 例子例子
abc NULL NULL
NULL 3 NULL

역순 정렬

REVERSE(value)

설명

입력 STRING 또는 BYTES를 역으로 반환합니다.

반환 유형

STRING 또는 BYTES

WITH example AS (
  SELECT "foo" AS sample_string, b"bar" AS sample_bytes UNION ALL
  SELECT "абвгд" AS sample_string, b"123" AS sample_bytes
)
SELECT
  sample_string,
  REVERSE(sample_string) AS reverse_string,
  sample_bytes,
  REVERSE(sample_bytes) AS reverse_bytes
FROM example;

+---------------+----------------+--------------+---------------+
| sample_string | reverse_string | sample_bytes | reverse_bytes |
+---------------+----------------+--------------+---------------+
| foo           | oof            | bar          | rab           |
| абвгд         | дгвба          | 123          | 321           |
+---------------+----------------+--------------+---------------+

RPAD

RPAD(original_value, return_length[, pattern])

설명

pattern이 추가되었으며 original_value로 구성된 을 반환합니다. return_length는 반환되는 값의 길이를 지정하는 INT64입니다. original_value가 BYTES인 경우 return_length는 바이트 수입니다. original_value가 STRING인 경우 return_length는 문자 수입니다.

pattern의 기본값은 빈 공백입니다.

original_valuepattern은 같은 데이터 유형이어야 합니다.

return_lengthoriginal_value 길이 이하일 경우, 이 함수는 return_length 값으로 잘린 original_value 값을 반환합니다. 예를 들어 RPAD("hello world", 7);"hello w"를 반환합니다.

original_value, return_length 또는 pattern이 NULL인 경우 이 함수는 NULL을 반환합니다.

이 함수는 다음과 같은 경우 오류를 반환합니다.

  • return_length가 음수인 경우
  • pattern이 비어 있는 경우

반환 유형

STRING 또는 BYTES

SELECT t, len, FORMAT("%T", RPAD(t, len)) AS RPAD FROM UNNEST([
  STRUCT('abc' AS t, 5 AS len),
  ('abc', 2),
  ('例子', 4)
]);
t len RPAD
abc 5 "abc  "
abc 2 "ab"
例子 4 "例子  "
SELECT t, len, pattern, FORMAT("%T", RPAD(t, len, pattern)) AS RPAD FROM UNNEST([
  STRUCT('abc' AS t, 8 AS len, 'def' AS pattern),
  ('abc', 5, '-'),
  ('例子', 5, '中文')
]);
t len 패턴 RPAD
abc 8 def "abcdefde"
abc 5 - "abc--"
例子 5 中文 "例子中文中"
SELECT FORMAT("%T", t) AS t, len, FORMAT("%T", RPAD(t, len)) AS RPAD FROM UNNEST([
  STRUCT(b'abc' AS t, 5 AS len),
  (b'abc', 2),
  (b'\xab\xcd\xef', 4)
]);
t len RPAD
b"abc" 5 b"abc  "
b"abc" 2 b"ab"
b"\xab\xcd\xef" 4 b"\xab\xcd\xef "
SELECT
  FORMAT("%T", t) AS t,
  len,
  FORMAT("%T", pattern) AS pattern,
  FORMAT("%T", RPAD(t, len, pattern)) AS RPAD
FROM UNNEST([
  STRUCT(b'abc' AS t, 8 AS len, b'def' AS pattern),
  (b'abc', 5, b'-'),
  (b'\xab\xcd\xef', 5, b'\x00')
]);
t len 패턴 RPAD
b"abc" 8 b"def" b"abcdefde"
b"abc" 5 b"-" b"abc--"
b"\xab\xcd\xef" 5 b"\x00" b"\xab\xcd\xef\x00\x00"

RTRIM

RTRIM(value1[, value2])

설명

TRIM과 동일하지만 후행 문자만 제거합니다.

반환 유형

STRING 또는 BYTES


WITH items AS
  (SELECT "***apple***" as item
  UNION ALL
  SELECT "***banana***" as item
  UNION ALL
  SELECT "***orange***" as item)

SELECT
  RTRIM(item, "*") as example
FROM items;

+-----------+
| example   |
+-----------+
| ***apple  |
| ***banana |
| ***orange |
+-----------+

WITH items AS
  (SELECT "applexxx" as item
  UNION ALL
  SELECT "bananayyy" as item
  UNION ALL
  SELECT "orangezzz" as item
  UNION ALL
  SELECT "pearxyz" as item)

SELECT
  RTRIM(item, "xyz") as example
FROM items;

+---------+
| example |
+---------+
| apple   |
| banana  |
| orange  |
| pear    |
+---------+

SAFE_CONVERT_BYTES_TO_STRING

SAFE_CONVERT_BYTES_TO_STRING(value)

설명

바이트의 시퀀스를 문자열로 변환합니다. 유효하지 않은 UTF-8 문자는 유니코드 대체 문자 U+FFFD로 대체됩니다.

반환 유형

STRING

다음 문은 유니코드 대체 문자 �를 반환합니다.

SELECT SAFE_CONVERT_BYTES_TO_STRING(b'\xc2') as safe_convert;

분할

SPLIT(value[, delimiter])

설명

delimiter 인수를 사용하여 value를 분할합니다.

STRING의 기본 구분 기호는 쉼표(,)입니다.

BYTES의 경우 구분 기호를 지정해야 합니다.

비어 있는 구분 기호로 분할하면 STRING 값의 경우에는 UTF-8 문자 배열이, BYTES 값의 경우에는 BYTES의 배열이 생성됩니다.

비어 있는 STRING을 분할하면 비어 있는 STRING이 하나 있는 ARRAY가 반환됩니다.

반환 유형

STRING 유형의 ARRAY 또는 BYTES 유형의 ARRAY


WITH letters AS
  (SELECT "a b c d" as letter_group
  UNION ALL
  SELECT "e f g h" as letter_group
  UNION ALL
  SELECT "i j k l" as letter_group)

SELECT SPLIT(letter_group, " ") as example
FROM letters;

+----------------------+
| example              |
+----------------------+
| [a, b, c, d]         |
| [e, f, g, h]         |
| [i, j, k, l]         |
+----------------------+

STARTS_WITH

STARTS_WITH(value1, value2)

설명

2개의 을 취합니다. 두 번째 값이 첫 번째 값의 접두사인 경우 TRUE를 반환합니다.

반환 유형

BOOL


WITH items AS
  (SELECT "foo" as item
  UNION ALL
  SELECT "bar" as item
  UNION ALL
  SELECT "baz" as item)

SELECT
  STARTS_WITH(item, "b") as example
FROM items;

+---------+
| example |
+---------+
|   False |
|    True |
|    True |
+---------+

STRPOS

STRPOS(string, substring)

설명

string 내부에서 처음 발견된 substring의 1로 시작하는 색인을 반환합니다. substring을 찾을 수 없는 경우 0을 반환합니다.

반환 유형

INT64


WITH email_addresses AS
  (SELECT
    "foo@example.com" AS email_address
  UNION ALL
  SELECT
    "foobar@example.com" AS email_address
  UNION ALL
  SELECT
    "foobarbaz@example.com" AS email_address
  UNION ALL
  SELECT
    "quxexample.com" AS email_address)

SELECT
  STRPOS(email_address, "@") AS example
FROM email_addresses;

+---------+
| example |
+---------+
|       4 |
|       7 |
|      10 |
|       0 |
+---------+

SUBSTR

SUBSTR(value, position[, length])

설명

제공된 의 하위 문자열을 반환합니다. position 인수는 하위 문자열의 시작 위치를 명시하는 정수로, position = 1은 첫 번째 문자나 바이트를 의미합니다. length 인수는 STRING 인수의 경우 최대 문자 수, BYTES 인수의 경우 최대 바이트 수입니다.

position이 음수인 경우, 이 함수는 value의 끝에서부터 계수하며 -1은 마지막 문자를 나타냅니다.

position이 STRING의 왼쪽 끝인 경우(position = 0 또는 position < -LENGTH(value)), 이 함수는 position = 1에서 시작됩니다. lengthvalue의 길이를 초과할 경우 length 문자보다 적은 값을 반환합니다.

length가 0보다 작은 경우 이 함수는 오류를 반환합니다.

반환 유형

STRING 또는 BYTES


WITH items AS
  (SELECT "apple" as item
  UNION ALL
  SELECT "banana" as item
  UNION ALL
  SELECT "orange" as item)

SELECT
  SUBSTR(item, 2) as example
FROM items;

+---------+
| example |
+---------+
| pple    |
| anana   |
| range   |
+---------+

WITH items AS
  (SELECT "apple" as item
  UNION ALL
  SELECT "banana" as item
  UNION ALL
  SELECT "orange" as item)

SELECT
  SUBSTR(item, 2, 2) as example
FROM items;

+---------+
| example |
+---------+
| pp      |
| an      |
| ra      |
+---------+

WITH items AS
  (SELECT "apple" as item
  UNION ALL
  SELECT "banana" as item
  UNION ALL
  SELECT "orange" as item)

SELECT
  SUBSTR(item, -2) as example
FROM items;

+---------+
| example |
+---------+
| le      |
| na      |
| ge      |
+---------+

TO_BASE32

TO_BASE32(bytes_expr)

설명

BYTES의 시퀀스를 base32로 인코딩된 STRING으로 변환합니다. base32로 인코딩된 STRING을 BYTES로 변환하려면 FROM_BASE32를 사용하세요.

반환 유형

STRING

SELECT TO_BASE32(b'abcde\xFF') AS base32_string;

+------------------+
| base32_string    |
+------------------+
| MFRGGZDF74====== |
+------------------+

TO_BASE64

TO_BASE64(bytes_expr)

설명

BYTES의 시퀀스를 base64로 인코딩된 STRING으로 변환합니다. base64로 인코딩된 STRING을 BYTES로 변환하려면 FROM_BASE64를 사용하세요.

반환 유형

STRING

SELECT TO_BASE64(b'\xde\xad\xbe\xef') AS base64_string;

+---------------+
| base64_string |
+---------------+
| 3q2+7w==      |
+---------------+

TO_CODE_POINTS

TO_CODE_POINTS(value)

설명

을 취해 INT64 배열을 반환합니다.

  • value가 STRING인 경우, 반환되는 배열의 각 요소는 코드 포인트를 나타냅니다. 각 코드 포인트는 [0, 0xD7FF] 및 [0xE000, 0x10FFFF] 범위에 속합니다.
  • value가 BYTES인 경우, 배열의 각 요소는 [0, 255] 범위의 확장된 ASCII 문자 값입니다.

코드 포인트의 배열을 STRING 또는 BYTES로 변환하려면 CODE_POINTS_TO_STRING 또는 CODE_POINTS_TO_BYTES를 참조하세요.

반환 유형

INT64의 ARRAY

다음 예는 단어 배열에 있는 각 요소의 코드 포인트를 가져옵니다.

SELECT word, TO_CODE_POINTS(word) AS code_points
FROM UNNEST(['foo', 'bar', 'baz', 'giraffe', 'llama']) AS word;

+---------+------------------------------------+
| word    | code_points                        |
+---------+------------------------------------+
| foo     | [102, 111, 111]                    |
| bar     | [98, 97, 114]                      |
| baz     | [98, 97, 122]                      |
| giraffe | [103, 105, 114, 97, 102, 102, 101] |
| llama   | [108, 108, 97, 109, 97]            |
+---------+------------------------------------+

다음 예는 BYTES의 정수 표현을 해당 ASCII 문자 값으로 변환합니다.

SELECT word, TO_CODE_POINTS(word) AS bytes_value_as_integer
FROM UNNEST([b'\x00\x01\x10\xff', b'\x66\x6f\x6f']) AS word;

+------------------+------------------------+
| word             | bytes_value_as_integer |
+------------------+------------------------+
| \x00\x01\x10\xff | [0, 1, 16, 255]        |
| foo              | [102, 111, 111]        |
+------------------+------------------------+

다음 예는 BYTES 결과와 STRING 결과의 차이를 보여줍니다.

SELECT TO_CODE_POINTS(b'Ā') AS b_result, TO_CODE_POINTS('Ā') AS s_result;

+------------+----------+
| b_result   | s_result |
+------------+----------+
| [196, 128] | [256]    |
+------------+----------+

문자 Ā가 2바이트 유니코드 시퀀스로 표현된다는 점에 유의하세요. 따라서 TO_CODE_POINTS의 BYTES 버전은 요소가 2개인 배열을 반환하며 STRING 버전은 요소가 하나인 배열을 반환합니다.

TO_HEX

TO_HEX(bytes)

설명

BYTES의 시퀀스를 16진수 STRING으로 변환합니다. STRING의 각 바이트를 범위(0..9, a..f)에 있는 2개의 16진수 문자로 반환합니다. 16진수로 인코딩된 STRING을 BYTES로 변환하려면 FROM_HEX를 사용하세요.

반환 유형

STRING

WITH Input AS (
  SELECT b'\x00\x01\x02\x03\xAA\xEE\xEF\xFF' AS byte_str UNION ALL
  SELECT b'foobar'
)
SELECT byte_str, TO_HEX(byte_str) AS hex_str
FROM Input;
+----------------------------------+------------------+
| byte_string                      | hex_string       |
+----------------------------------+------------------+
| foobar                           | 666f6f626172     |
| \x00\x01\x02\x03\xaa\xee\xef\xff | 00010203aaeeefff |
+----------------------------------+------------------+

TRIM

TRIM(value1[, value2])

설명

value2와 일치하는 모든 선행 및 후행 문자를 제거합니다. value2가 지정되지 않으면 모든 선행 및 후행 공백 문자(유니코드 표준의 정의에 따름)가 제거됩니다. 첫 번째 인수의 유형이 BYTES인 경우, 두 번째 인수가 필요합니다.

value2에 둘 이상의 문자나 바이트가 포함되어 있는 경우, 이 함수는 value2에 포함된 모든 선행 또는 후행 문자 또는 바이트를 제거합니다.

반환 유형

STRING 또는 BYTES


WITH items AS
  (SELECT "   apple   " as item
  UNION ALL
  SELECT "   banana   " as item
  UNION ALL
  SELECT "   orange   " as item)

SELECT
  CONCAT("#", TRIM(item), "#") as example
FROM items;

+----------+
| example  |
+----------+
| #apple#  |
| #banana# |
| #orange# |
+----------+

WITH items AS
  (SELECT "***apple***" as item
  UNION ALL
  SELECT "***banana***" as item
  UNION ALL
  SELECT "***orange***" as item)

SELECT
  TRIM(item, "*") as example
FROM items;

+---------+
| example |
+---------+
| apple   |
| banana  |
| orange  |
+---------+

WITH items AS
  (SELECT "xxxapplexxx" as item
  UNION ALL
  SELECT "yyybananayyy" as item
  UNION ALL
  SELECT "zzzorangezzz" as item
  UNION ALL
  SELECT "xyzpearxyz" as item)

SELECT
  TRIM(item, "xyz") as example
FROM items;

+---------+
| example |
+---------+
| apple   |
| banana  |
| orange  |
| pear    |
+---------+

UPPER

UPPER(value)

설명

STRING 인수의 경우 원래 문자열에서 모든 알파벳 문자를 대문자로 변환하여 반환합니다. 소문자와 대문자 간의 매핑은 계정 언어별 매핑을 고려하지 않고 유니코드 문자 데이터베이스에 따라 수행됩니다.

BYTES 인수는 ASCII 텍스트로 취급되며 127보다 큰 모든 바이트는 그대로 유지됩니다.

반환 유형

STRING 또는 BYTES


WITH items AS
  (SELECT
    "foo" as item
  UNION ALL
  SELECT
    "bar" as item
  UNION ALL
  SELECT
    "baz" as item)

SELECT
  UPPER(item) AS example
FROM items;

+---------+
| example |
+---------+
| FOO     |
| BAR     |
| BAZ     |
+---------+
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.