> 데이터 베이스 > MySQL 튜토리얼 > mysql 문자열 함수

mysql 문자열 함수

伊谢尔伦
풀어 주다: 2016-11-23 13:05:29
원래의
1040명이 탐색했습니다.

결과의 길이가 max_allowed_packet 시스템 변수의 최대값보다 큰 경우 문자열 값 함수의 반환 값은 NULL입니다.

문자열 위치에서 작동하는 함수의 경우 첫 번째 위치는 1로 지정됩니다.

ASCII(str)

반환 값은 문자열 str의 가장 왼쪽 문자의 숫자 값입니다. str이 빈 문자열인 경우 반환 값은 0입니다. str이 NULL인 경우 반환 값은 NULL입니다. ASCII()는 0부터 255까지의 숫자값을 갖는 문자에 사용됩니다.

mysql> SELECT ASCII('2');

-> 50

mysql> SELECT ASCII(2);

->

mysql> SELECT ASCII('dx');

-> 100

ORD() 함수를 참조하세요.

BIN(N)

N의 이진 값에 대한 문자열 표현을 반환합니다. 여기서 N은 longlong(BIGINT) 숫자입니다. 이는 CONV(N,10,2)와 동일합니다. N이 NULL인 경우 반환 값은 NULL입니다.

mysql> SELECT BIN(12);

-> '1100'

BIT_LENGTH(str)

반환 값은 이진 문자열 str입니다. 길이.

mysql> SELECT BIT_LENGTH('text');

-> 32

CHAR(N,... [문자 집합 사용])

CHAR()는 각 인수 N을 정수로 해석하고 이러한 정수의 코드 값으로 주어진 문자를 포함하는 문자열을 반환합니다. NULL 값은 생략됩니다.

mysql> SELECT CHAR(77,121,83,81,'76');

-> 'MySQL'

mysql>77.3') 🎜>-> 'MMM'

255보다 큰 CHAR() 매개변수는 여러 결과 문자로 변환됩니다. 예를 들어 CHAR(256)은 CHAR(1,0)과 동일하고 CHAR(256*256)은 CHAR(1,0,0)과 동일합니다.

mysql> ,0 )), HEX(CHAR(256));

+---+--------------- ----- -+

| HEX(CHAR(1,0)) |

+---------- ----- +----------------+

| 0100 |

+--------- ------- ---+---+

mysql> SELECT HEX(CHAR(1,0,0)), HEX( CHAR(256*256)) ;

+------+---------------- ----+

| HEX(CHAR(1,0,0)) | HEX(CHAR(256*256)) |

+--------- ------- -+---------+

|010000 |

+- ------- ----------+---------+

반환 값 CHAR()은 이진 문자열입니다. 선택적으로 USING 문을 사용하여 지정된 문자 집합으로 문자열을 생성할 수 있습니다.

USING이 생성되고 결과 문자열이 지정된 문자 집합을 따르지 않으면 경고가 발생합니다. 마찬가지로 엄격한 SQL 모드가 활성화되면 CHAR()의 결과는 NULL이 됩니다.
mysql> SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8));
+---------------------+--------------------------------+
| CHARSET(CHAR(0x65)) | CHARSET(CHAR(0x65 USING utf8)) |
+---------------------+--------------------------------+
| binary              | utf8                           |
+---------------------+--------------------------------+
로그인 후 복사

CHAR_LENGTH(str)

반환값은 문자열 str의 길이이며, 길이 단위는 문자입니다. 멀티바이트 문자는 단일 문자로 간주됩니다. 5개의 2바이트 문자 집합에 대해 LENGTH()는 10을 반환하고 CHAR_LENGTH()는 5를 반환합니다.

CHARACTER_LENGTH(str)

CHARACTER_LENGTH()는 CHAR_LENGTH()의 동의어입니다.

COMPRESS(string_to_compress)

문자열을 압축합니다. 이 기능을 사용하려면 zlib와 같은 압축 라이브러리를 사용하여 MySQL을 압축해야 합니다. 그렇지 않으면 반환 값은 항상 NULL입니다. UNCOMPRESS()는 압축된 문자열의 압축을 풀 수 있습니다.

mysql> SELECT LENGTH(COMPRESS('a',1000)));

-> 21

mysql> );

-> 0

mysql> SELECT LENGTH(COMPRESS('a'));

-> LENGTH(COMPRESS(REPEAT('a',16)));

-> 15

압축된 문자열의 내용은 다음과 같은 방식으로 저장됩니다.

빈 문자열은 빈 문자열로 저장됩니다.

비어 있지 않은 문자열 4바이트 길이의 압축되지 않은 문자열이 저장되고(낮은 바이트부터 먼저) 압축된 문자열이 저장됩니다. 문자열이 공백으로 끝나면 결과 값이 CHAR 또는 VARCHAR 유형의 필드 열에 저장될 때 후행 공백이 자동으로 제거되는 것을 방지하기 위해 끝에 "."이 추가됩니다. (압축된 문자열을 저장하기 위해 CHAR 또는 VARCHAR를 사용하는 것은 권장되지 않습니다. 대신 BLOB 열을 사용하는 것이 좋습니다).

CONCAT(str1,str2,...)

반환 결과는 연결 매개변수에 의해 생성된 문자열입니다. 매개변수가 NULL인 경우 반환 값은 NULL입니다. 하나 이상의 매개변수가 있을 수 있습니다. 모든 인수가 이진이 아닌 문자열인 경우 결과는 이진이 아닌 문자열입니다. 인수에 이진 문자열이 포함되어 있으면 결과는 이진 문자열입니다. 숫자 인수는 동등한 이진 문자열 형식으로 변환됩니다. 이를 방지하려면 명시적인 유형 캐스트를 사용하십시오. 예: SELECT CONCAT(CAST(int_col AS CHAR), char_col)

mysql> ; ', 'S', 'QL');

-> 'MySQL'

mysql> SELECT CONCAT('My', NULL, 'QL');

-> NULL

mysql> CONCAT(14.3);

-> '14.3'

CONCAT_WS(separator,str1,str2,...)

CONCAT_WS()는 구분 기호가 있는 CONCAT을 나타냅니다. CONCAT()의 특수한 형식입니다. 첫 번째 매개변수는 다른 매개변수의 구분 기호입니다. 구분 기호의 위치는 연결할 두 문자열 사이에 배치됩니다. 구분 기호는 문자열이나 기타 매개변수일 수 있습니다. 구분 기호가 NULL이면 결과는 NULL입니다. 이 함수는 구분 기호 인수 뒤의 NULL 값을 무시합니다.

mysql> SELECT CONCAT_WS(',','이름','두번째 이름','성');

->

mysql> SELECT CONCAT_WS(',','이름',NULL,'성');

-> '이름,성'

CONCAT_WS()는 빈 문자열을 무시하지 않습니다. (단, NULL은 모두 무시됩니다.)

CONV(N,from_base,to_base)

다른 진수 간에 숫자를 변환합니다. 반환 값은 from_base 기준에서 to_base 기준으로 변환된 숫자의 N 문자열 표현입니다. 매개변수가 NULL인 경우 반환 값은 NULL입니다. 인수 N은 정수로 이해되지만 정수 또는 문자열로 지정될 수 있습니다. 최소 기본은 2이고 최대는 36입니다. to_base가 음수인 경우 N은 부호 있는 숫자로 처리됩니다. 그렇지 않으면 N은 부호 없는 숫자로 처리됩니다. CONV()는 64비트 정밀도로 작동합니다.

mysql> SELECT CONV('a',16,2);

-> '1010'

mysql> );

-> '172'

mysql> SELECT CONV(-17,10,-18);

->

mysql> SELECT CONV(10+'10'+'10'+0xa,10,10);

-> '40'

ELT(N,str1,str2 ,str3,...)

N = 1이면 반환 값은 str1이고, N = 2이면 반환 값은 str2입니다. N이 1보다 작거나 매개변수 개수보다 큰 경우 반환 값은 NULL입니다. ELT()는 FIELD()의 보완입니다.

mysql> SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo');

-> 'ej'

mysql> SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo');

-> 'foo'

EXPORT_SET(bits,on,off[,separator [,number_of_bits]])

반환 값은 문자열입니다. 여기서 비트 값의 각 비트 그룹에 대해 on 문자열을 얻을 수 있고, 지워진 각 비트에 대해 off 문자열을 얻을 수 있습니다. 비트 단위의 비트 값은 오른쪽에서 왼쪽으로(하위 비트부터 상위 비트까지) 확인됩니다. 구분 기호 문자열(기본 쉼표 ',')로 구분된 문자열은 왼쪽에서 오른쪽 순서로 결과에 추가됩니다. number_of_bits는 테스트되는 비트 수를 제공합니다(기본값은 64).

mysql> SELECT EXPORT_SET(5,'Y','N',',',4);

-> 'Y,N,Y,N'

mysql> SELECT EXPORT_SET(6,'1','0',',',10);

-> 0,0'

FIELD(str,str1,str2,str3,...)

반환 값은 str1, str2, str3,... 목록의 str 인덱스입니다. str을 찾을 수 없으면 반환 값은 0입니다.

FIELD()의 모든 매개변수가 문자열인 경우 모든 매개변수는 문자열로 비교됩니다. 모든 인수가 숫자인 경우 비교는 숫자로 수행됩니다. 그렇지 않으면 매개변수가 두 배로 비교됩니다.

str이 NULL인 경우 NULL은 어떤 값과도 동일하게 비교할 수 없으므로 반환 값은 0입니다. FIELD()는 ELT()의 보완입니다.

mysql> SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');

-> 🎜>mysql> SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');

-> 0

FIND_IN_SET( str,strlist)

문자열 str이 N개의 서브체인으로 구성된 문자열 목록 strlist에 있는 경우 반환 값의 범위는 1에서 N까지입니다. 문자열 목록은 ',' 문자로 구분된 문자열 체인입니다. 첫 번째 인수가 상수 문자열이고 두 번째 인수가 SET 유형의 열인 경우 FIND_IN_SET() 함수는 비트 계산을 사용하도록 최적화됩니다. str이 strlist에 없거나 strlist가 빈 문자열인 경우 반환 값은 0입니다. 매개변수가 NULL인 경우 반환 값은 NULL입니다. 첫 번째 인수에 쉼표(',')가 포함되어 있으면 이 함수가 제대로 작동하지 않습니다.

mysql> SELECT FIND_IN_SET('b','a,b,c,d');

-> 2

FORMAT(X,D)

번호 설정

HEX(N_or_S)

N_OR_S가 숫자인 경우 16진수 값 N의 문자열 표현을 반환합니다. 여기서 N은 longlong(BIGINT) 숫자입니다. 이는 CONV(N,10,16)과 동일합니다.

N_OR_S가 문자열인 경우 반환 값은 N_OR_S의 16진수 문자열 표현입니다. 여기서 각 N_OR_S의 각 문자는 두 개의 16진수 숫자로 변환됩니다.

mysql> SELECT HEX(255);

-> 'FF'

mysql> SELECT 0x616263;

-> 🎜>

mysql> SELECT HEX('abc');

-> 616263

INSERT(str,pos,len,newstr)

문자열 반환 , 해당 부분 문자열은 pos 위치에서 시작하고 문자열 newstr의 len 문자로 대체됩니다. pos가 문자열 길이를 초과하는 경우 반환 값은 원래 문자열입니다. len의 길이가 다른 문자열의 길이보다 길면 pos 위치부터 교체가 시작됩니다. 매개 변수가 null인 경우 반환 값은 NULL입니다.

mysql> SELECT INSERT('2차', 3, 4, '무엇');

-> 'QuWhattic'

mysql> , -1, 4, '무엇');

-> '2차'

mysql> SELECT INSERT('2차', 3, 100, '무엇');

-> 'QuWhat'

이 기능은 멀티바이트 문자를 지원합니다.

INSTR(str,substr)

문자열 str에서 부분 문자열이 처음 나타나는 위치를 반환합니다. 이는 인수 순서가 반대라는 점을 제외하면 LOCATE()의 두 인수 형식과 동일합니다.

mysql> SELECT INSTR('foobarbar', 'bar');

-> 4

mysql> SELECT INSTR('xbar', 'foobar');

-> 0

이 함수는 멀티바이트 문자를 지원하며 하나 이상의 인수가 이진 문자열인 경우에만 대소문자를 구분합니다.

LCASE(str)

LCASE()는 LOWER()의 동의어입니다.

LEFT(str,len)

문자열 str에서 시작하여 len의 가장 왼쪽 문자를 반환합니다.

mysql> SELECT LEFT('foobarbar', 5);

-> 'fooba'

LENGTH(str)

문자 문자열 str의 길이(바이트)입니다. 멀티바이트 문자는 멀티바이트로 간주됩니다. 즉, 5개의 2바이트 문자가 포함된 문자열의 경우 LENGTH()는 10을 반환하고 CHAR_LENGTH()는 5를 반환합니다.

mysql> SELECT LENGTH('text');

-> 4

LOAD_FILE(file_name)

파일을 읽고 이 파일을 넣습니다. 문자열 형식으로. 파일 위치는 서버에 있어야 하며 파일에 전체 경로 이름을 제공해야 하며 FILE 권한이 있어야 합니다. 파일은 읽을 수 있어야 하며 파일 크기는 max_allowed_packet 바이트보다 작아야 합니다.

파일이 존재하지 않거나, 위의 조건을 만족하지 않아 읽을 수 없는 경우 함수 반환값은 NULL입니다.

mysql> UPDATE tbl_name

SET blob_column=LOAD_FILE('/tmp/picture')

WHERE id=1;

LOCATE(substr,str ), LOCATE(substr,str,pos)

첫 번째 구문은 문자열 str에서 하위 문자열 substr이 처음 나타나는 위치를 반환합니다. 두 번째 구문은 문자열 str에서 pos에서 시작하여 부분 문자열 substr이 처음 나타나는 위치를 반환합니다. substr이 str에 없으면 반환 값은 0입니다.

mysql> SELECT LOCATE('bar', 'foobarbar');

-> 4

mysql> SELECT LOCATE('xbar', 'foobar');

-> 0

mysql> SELECT LOCATE('bar', 'foobarbar',5);

-> 멀티바이트 문자는 지원되며 하나 이상의 인수가 이진 문자열인 경우에만 대/소문자를 구분합니다.

LOWER(str)

최신 문자 집합 매핑 테이블(기본값은 cp1252 Latin1)에 따라 문자열 str과 모든 문자가 소문자로 변경된 값을 반환합니다.

mysql> SELECT LOWER('QUADRATICALLY');

-> 'quadratically'

이 함수는 멀티바이트 문자를 지원합니다.

LPAD(str,len,padstr)

왼쪽이 padstr 문자열로 len 문자 길이만큼 채워져 문자열 str을 반환합니다. str의 길이가 len보다 길면 반환 값은 len 문자로 단축됩니다.

mysql> SELECT LPAD('hi',4,'??');

-> '??hi'

mysql> ',1,'??');

-> 'h'

LTRIM(str)

앞 공백 문자를 제거한 문자열 str을 반환합니다.

mysql> SELECT LTRIM(' barbar');

-> 'barbar'

이 함수는 멀티바이트 문자를 지원합니다.

MAKE_SET(비트,str1,str2,...)

返回一个设定值 (一个包含被‘,’号分开的字字符串的字符串) ,由在bits 组中具有相应的比特的字符串组成。str1 对应比特 0,str2 对应比特1,以此类推。str1, str2, ...中的 NULL值不会被添加到结果中。

mysql> SELECT MAKE_SET(1,'a','b','c');

-> 'a'

mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');

-> 'hello,world'

mysql> SELECT MAKE_SET(1 | 4,'hello','nice',NULL,'world');

-> 'hello'

mysql> SELECT MAKE_SET(0,'a','b','c');

-> ''

MID(str,pos,len)

MID(str,pos,len) 是 SUBSTRING(str,pos,len)的同义词。

OCT(N)

返回一个 N的八进制值的字符串表示,其中 N 是一个longlong (BIGINT)数。这等同于CONV(N,10,8)。若N 为 NULL ,则返回值为NULL。

mysql> SELECT OCT(12);

-> '14'

OCTET_LENGTH(str)

OCTET_LENGTH() 是 LENGTH()的同义词。

ORD(str)

若字符串str 的最左字符是一个多字节字符,则返回该字符的代码, 代码的计算通过使用以下公式计算其组成字节的数值而得出:

   (1st byte code)
+ (2nd byte code × 256)
+ (3rd byte code × 2562) ...
로그인 후 복사

假如最左字符不是一个多字节字符,那么 ORD()和函数ASCII()返回相同的值。

mysql> SELECT ORD('2');

-> 50

POSITION(substr IN str)

POSITION(substr IN str)是 LOCATE(substr,str)同义词。

QUOTE(str)

引证一个字符串,由此产生一个在SQL语句中可用作完全转义数据值的结果。  返回的字符串由单引号标注,每例都带有单引号 (‘'’)、 反斜线符号 (‘\’)、 ASCII NUL以及前面有反斜线符号的Control-Z 。如果自变量的值为NULL, 则返回不带单引号的单词 “NULL”。

mysql> SELECT QUOTE('Don\'t!');

-> 'Don\'t!'

mysql> SELECT QUOTE(NULL);

-> NULL

REPEAT(str,count)

返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count 。 若 count <= 0,则返回一个空字符串。若str 或count 为 NULL,则返回 NULL 。

mysql> SELECT REPEAT('MySQL', 3);

-> 'MySQLMySQLMySQL'

REPLACE(str,from_str,to_str)

返回字符串str 以及所有被字符串to_str替代的字符串from_str 。

mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');

-> 'WwWwWw.mysql.com'

这个函数支持多字节字元。

REVERSE(str)

返回字符串 str ,顺序和字符顺序相反。

mysql> SELECT REVERSE('abc');

-> 'cba'

这个函数支持多字节字元。

RIGHT(str,len)

从字符串str 开始,返回最右len 字符。

mysql> SELECT RIGHT('foobarbar', 4);

-> 'rbar'

这个函数支持多字节字元。

RPAD(str,len,padstr)

返回字符串str, 其右边被字符串 padstr填补至len 字符长度。假如字符串str 的长度大于 len,则返回值被缩短到与 len 字符相同长度。

mysql> SELECT RPAD('hi',5,'?');

-> 'hi???'

mysql> SELECT RPAD('hi',1,'?');

-> 'h'

这个函数支持多字节字元。

RTRIM(str)

返回字符串 str ,结尾空格字符被删去。

mysql> SELECT RTRIM('barbar   ');

-> 'barbar'

这个函数支持多字节字元。

SOUNDEX(str)

从str返回一个soundex字符串。 两个具有几乎同样探测的字符串应该具有同样的 soundex 字符串。一个标准的soundex字符串的长度为4个字符,然而SOUNDEX() 函数会返回一个人以长度的字符串。 可使用结果中的SUBSTRING() 来得到一个标准 soundex 字符串。在str中,会忽略所有未按照字母顺序排列的字符。 所有不在A-Z范围之内的国际字母符号被视为元音字母。

mysql> SELECT SOUNDEX('Hello');

-> 'H400'

mysql> SELECT SOUNDEX('Quadratically');

-> 'Q36324'

참고: 이 기능은 D. Knuth의 설명에 따라 널리 사용되는 향상된 버전이 아닌 원래 Soundex 알고리즘을 구현합니다. 차이점은 원본 버전은 모음을 먼저 제거한 다음 반복을 제거하는 반면, 향상된 버전은 반복을 먼저 제거한 다음 모음을 제거한다는 것입니다.

expr1은 expr2와 유사합니다

이는 SOUNDEX(expr1) = SOUNDEX(expr2)와 같습니다.

SPACE(N)

N개의 공백 기호로 구성된 문자열을 반환합니다.

mysql> SELECT SPACE(6);

-> '

SUBSTRING(str,pos) , SUBSTRING(str,pos, len) , SUBSTRING(str FROM pos FOR len)

len 매개변수가 없는 형식은 문자열 str에서 위치 pos에서 시작하는 하위 문자열을 반환합니다. len 매개변수가 있는 형식은 pos 위치에서 시작하여 문자열 str의 len 문자와 동일한 길이의 하위 문자열을 반환합니다. FROM을 사용하는 형식은 표준 SQL 구문입니다. pos에 음수 값을 사용하는 것도 가능합니다. 그렇다면 하위 문자열 위치는 문자열의 시작 부분이 아니라 문자열 끝에 있는 pos 문자에서 시작됩니다. 다음 형식의 함수에서는 pos에 음수 값을 사용할 수 있습니다.

mysql> SELECT SUBSTRING('2차',5);

-> '정확하게'

mysql> SELECT SUBSTRING('foobarbar' FROM 4);

-> 'barbar'

mysql> SELECT SUBSTRING('2차',5,6);

-> 'ratica'

mysql> SELECT SUBSTRING('Sakila', -3);

-> 'ila'

mysql> SELECT SUBSTRING('Sakila', -5, 3);

-> 'aki'

mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2);

-> 'ki'

이 함수는 여러 단어를 지원합니다. 섹션 문자.

len에 1보다 작은 값을 사용하면 결과는 항상 빈 문자열입니다.

SUBSTR()은 SUBSTRING()의 동의어입니다.

SUBSTRING_INDEX(str,delim,count)

구분 기호 delim 및 count가 나타나기 전에 문자열 str에서 자체 문자열을 반환합니다. count가 양수 값이면 최종 구분 기호 왼쪽(왼쪽부터 시작)에 있는 모든 항목이 반환됩니다. count가 음수이면 구분 기호 오른쪽(오른쪽부터 시작)에 있는 모든 항목이 반환됩니다.

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);

-> 'www.mysql'

mysql> ('www.mysql.com', '.', -2);

-> 'mysql.com'

이 함수는 멀티바이트 문자를 지원합니다.

TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) TRIM(remstr FROM] str)

모든 remstr 접두사 및/또는 접미사가 has인 문자열 str을 반환합니다. 삭제되었습니다. 분류자 BOTH, LEADIN 또는 TRAILING 중 어느 것도 제공되지 않으면 BOTH가 가정됩니다. remstr은 선택 사항이며 지정되지 않은 경우 공백을 제거할 수 있습니다.

mysql> SELECT TRIM(' bar ');

-> 'bar'

mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');

-> 'barxxx'

mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');

-> mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');

-> 'barx'

이 함수는 멀티바이트 문자를 지원합니다.

UCASE(str)

UCASE()는 UPPER()의 동의어입니다.

UNCOMPRESS(string_to_uncompress)

COMPRESS() 함수로 압축된 문자열을 압축 해제합니다. 인수가 압축된 값인 경우 결과는 NULL입니다. 이 기능을 사용하려면 MySQL이 zlib와 같은 압축 라이브러리로 컴파일되어야 합니다. 그렇지 않으면 반환 값은 항상 NULL이 됩니다.

mysql> SELECT UNCOMPRESS('모든 문자열'));

-> '모든 문자열'

mysql>

-> NULL

UNCOMPRESSED_LENGTH(compressed_string)

압축 전 압축된 문자열의 길이를 반환합니다.

mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('a',30)));

-> 30

UNHEX(str)

HEX(str)에서 역연산을 수행합니다. 즉, 매개변수의 각 16진수 쌍을 숫자로 인식하고 해당 숫자가 나타내는 문자로 변환합니다. 결과 문자는 이진 문자열로 반환됩니다.

mysql> SELECT UNHEX('4D7953514C');

-> 'MySQL'

mysql> '문자열'));

-> '문자열'

mysql> SELECT HEX(UNHEX('1267')) ;

-> 🎜>

UPPER(str)

문자열 str을 반환하고, 최신 문자 집합 매핑에 따라 대문자로 변환된 문자를 반환합니다(기본값은 cp1252 Latin1).

mysql> UPPER('헤이');

->

이 기능은 멀티바이트 문자를 지원합니다.

1. 문자열 비교 기능

에 따르면 MySQL은 자동으로 숫자를 문자열로 또는 그 반대로 변환합니다.

mysql> SELECT 1+'1';

-> 2

mysql> SELECT CONCAT(2,' test');

- > '2 test'

숫자를 문자열로 명시적으로 변환하려면 CAST() 또는 CONCAT() 함수를 사용할 수 있습니다:

mysql> 38.8 AS SELECT 38.8, CONCAT(38.8);

-> 38.8, '38.8'

CAST()가 바람직합니다. .

이진 문자열이 문자열 함수의 매개변수로 제공된 경우 결과 문자열도 이진 문자열이 됩니다. 문자열로 변환된 숫자는 이진 문자열로 처리됩니다. 이는 비교 결과에만 영향을 미칩니다.

일반적으로 문자열 비교의 표현식이 대소문자를 구분하는 경우 비교에서도 대소문자를 구분합니다.

expr LIKE pat [ESCAPE 'escape-char']

SQL 단순 정규식 비교를 사용하여 패턴 일치. 1(TRUE) 또는 0(FALSE)을 반환합니다. expr 또는 pat가 NULL이면 결과는 NULL입니다.

패턴은 리터럴 문자열일 필요는 없습니다. 예를 들어 문자열 표현식이나 테이블 열로 지정할 수 있습니다.

패턴에서 LIKE와 함께 다음 두 개의 와일드카드를 사용할 수 있습니다.

문자 설명

% 0자를 포함하여 모든 수의 문자와 일치합니다.

_ 하나의 문자만 일치할 수 있습니다.

mysql> SELECT 'David_';

-> SELECT 'David!' D%v%';

-> 1

와일드카드 문자의 리터럴 인스턴스를 테스트하려면 문자 앞에 이스케이프 문자를 배치하세요. ESCAPE 문자를 지정하지 않으면 ' '로 간주됩니다.

문자열 설명

% '%' 문자와 일치

_ '_' 문자와 일치

mysql> SELECT 'David!' ';

-> 0

mysql> SELECT 'David_' LIKE 'David_';

-> 이스케이프 문자를 사용하려면 다음과 같이 ESCAPE 문을 사용할 수 있습니다.

mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|';

-> 의미 시퀀스는 비어 있거나 길이가 한 문자일 수 있습니다. MySQL 5.1.2부터 NO_BACKSLASH_ESCAPES SQL 모드가 활성화되면 시퀀스가 ​​비어 있을 수 없습니다.

다음 두 문은 피연산자 중 하나가 이진 문자열이 아닌 한 문자열 비교에서 대소문자를 구분하지 않음을 보여줍니다.

mysql> SELECT 'abc' LIKE 'ABC';

-> 1

mysql> SELECT 'abc' LIKE BINARY 'ABC';

-> 0

MySQL에서는 숫자로 LIKE를 사용할 수 있습니다. 표현. (이것은 표준 SQL LIKE의 확장입니다.)

mysql> SELECT 10 LIKE '1%';

-> 1

참고: MySQL은 문자열에 C 이스케이프 구문을 사용하므로(예: 'n' 사용) 개행 문자를 나타냄) LIKE 문자열에서 사용된 ''는 이중으로 작성되어야 합니다. 예를 들어 'n'을 찾으려면 '\n'으로 써야 합니다. ''를 찾으려면 '\\'로 써야 합니다. 그 이유는 백슬래시 기호가 구문 분석기에 의해 한 번 제거되고 패턴 일치를 수행할 때 다시 제거되고 마침내 하나가 되기 때문입니다. 일치를 위해 백슬래시 기호가 허용됩니다.

expr NOT LIKE pat [ESCAPE 'escape-char']

이는 NOT(expr LIKE pat [ESCAPE 'escape-char'])과 동일합니다.

expr NOT REGEXP pat expr NOT RLIKE pat

이것은 NOT(expr REGEXP pat)과 동일합니다.

expr REGEXP pat expr RLIKE pat

문자열 표현식 expr과 패턴 pat의 패턴 매칭을 수행합니다. 패턴은 정규식으로 확장될 수 있습니다. expr이 pat와 일치하면 1을 반환하고, 그렇지 않으면 0을 반환합니다. expr 또는 pat가 NULL이면 결과는 NULL입니다. RLIKE는 REGEXP의 동의어이며 그 기능은 mSQL에 대한 호환성을 제공하는 것입니다.

패턴은 리터럴 문자열일 필요는 없습니다. 예를 들어 문자열 표현식이나 테이블 열로 지정할 수 있습니다.

참고: MySQL은 문자열에서 C 이스케이프 구문을 사용하므로(예를 들어 'n'을 사용하여 개행 문자를 나타냄) REGEXP 문자열에 사용된 ''는 두 배가 되어야 합니다.

REGEXP는 바이너리 문자열과 함께 사용되지 않는 한 대소문자를 구분하지 않습니다.

mysql> SELECT 'Monty!' REGEXP 'm%y%%';

-> 0

mysql> ;

-> 1

mysql> SELECT 'new*n*line' REGEXP 'new\*.\*line';

-> mysql> SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A';

-> 1 0

mysql> SELECT 'a' REGEXP '^[a-d]' ;

-> 1

문자 유형을 결정할 때 REGEXP 및 RLIKE는 현재 문자 집합(기본적으로 cp1252 Latin1)을 사용합니다. 경고: 이 연산자는 멀티바이트 문자를 지원하지 않습니다.

STRCMP(expr1,expr2)

모든 문자열이 동일할 경우 현재 분류 ​​순서에 따라 첫 번째 매개변수가 두 번째 매개변수보다 작으면 - 1. 그 외의 경우에는 1이 반환됩니다.

mysql> SELECT STRCMP('text', 'text2');

-> -1

mysql> SELECT STRCMP('text2', 'text') ;

-> 1

mysql> SELECT STRCMP('text', 'text');

-> 0

, STRCMP()는 현재 문자 집합을 사용합니다. 이렇게 하면 피연산자 중 하나 또는 둘 다 이진 문자열인 경우를 제외하고 기본 비교에서 대/소문자를 구분하게 됩니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿