mysql 5.7 string functions

57
MySQL 5.7 String Functions A complete presentation of MySQL 5.7 String Functions with explanation, syntax and examples. Francesco Marino [email protected]

Upload: francesco-marino

Post on 18-Feb-2017

129 views

Category:

Data & Analytics


1 download

TRANSCRIPT

Page 1: MySQL 5.7 String Functions

MySQL 5.7 String FunctionsA complete presentation of MySQL 5.7 String Functions with explanation, syntax and examples.

Francesco [email protected]

Page 2: MySQL 5.7 String Functions

String Operators

Page 3: MySQL 5.7 String Functions

ASCII(str)

SELECT ASCII ('4');Output: 54

SELECT ASCII (4);Output: 54

SELECT ASCII ('ab');Output: 97

Returns the numeric value of the leftmost character of the string str. Returns 0 if str is an empty string, NULL if str is NULL

Page 4: MySQL 5.7 String Functions

BIN(N)

SELECT BIN ('12');Output: 1100

SELECT BIN (5);Output: 101

Returns a string representation of the binary value of N, where N is of BIGINT type number. Returns NULL if N is NULL.

Page 5: MySQL 5.7 String Functions

BIT_LENGHT(N)

SELECT BIT_LENGTH('text');Output: 32

SELECT BIT_LENGTH('error');Output: 40

Returns the length of the string str in bits.

Page 6: MySQL 5.7 String Functions

CHAR(N,... [USING charset_name])

SELECT CHAR(77,121,83,81,76);Output: MySQL

SELECT CHAR(77,121,83,81,'76' USING UTF8);Output: MySQL

Hint: If MySQL Workbench get back a BLOB icon, Go to Edit > Preferences > SQL Editor > SQL Execution > check Treat BINARY/VARBINARY as nonbinary character string > Restart Workbench

Interprets each argument N as an integer and returns a string consisting of the characters given by the code values of those integers. NULL values are skipped.

Page 7: MySQL 5.7 String Functions

CHAR_LENGTH(str)

SELECT CHAR_LENGTH('test');Output: 4

SELECT CHAR_LENGTH('test word');Output: 9

Returns the length of the string str, measured in characters. A multibyte character counts as a single character.

Page 8: MySQL 5.7 String Functions

CHARACTER_LENGTH(str)

SELECT CHARACTER_LENGTH('test');Output: 4

SELECT CHARACTER_LENGTH('test word');Output: 9

Is a synonym for CHAR_LENGTH(str).

Page 9: MySQL 5.7 String Functions

CONCAT(str1,[str2,...,strN])

SELECT CONCAT('a');Output: a

SELECT CONCAT('a','b','c',1); Output: abc1

SELECT CONCAT('a', NULL, 3);Output: NULL

Returns the string that results from concatenating the arguments. If all arguments are nonbinary strings, the result is a nonbinary string; if include any binary strings, the result is a binary string. A numeric argument is converted to its equivalent nonbinary string form.

Page 10: MySQL 5.7 String Functions

CONCAT_WS(separator,str1[,str2,...,strN])

SELECT CONCAT_WS(';','String1','String2','Last Name');Output: String1;String2;Last Name

SELECT CONCAT_WS('&','a','&','Co'); Output: a&2&Co

Stands for Concatenate With Separator. The first argument is the separator for the rest of the arguments. The separator is added between the strings to be concatenated. The separator can be a string. If the separator is NULL, the result is NULL.

Page 11: MySQL 5.7 String Functions

ELT(N,str1[,str2,...,strN])

SELECT ELT(1, 'test', 'word', 'string', 'char');Output: test

SELECT ELT(4, 'test', 'word', 'string', 'char');Output: char

SELECT ELT(6, 'test', 'word', 'string', 'char');Output: NULL

Returns the Nth element of the list of strings: str1 if N = 1, str2 if N = 2, and so on. Returns NULL if N is less than 1 or greater than the number of arguments.

Page 12: MySQL 5.7 String Functions

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

SELECT EXPORT_SET(5,'Y','N',',',4);Output: Y,N,Y,N

SELECT EXPORT_SET(7,'Y','N',',',4);Output: Y,Y,Y,N

Return a string such that for every bit set in the value bits, you get an on string and for every unset bit, you get an off string. The number of bits examined is given by number_of_bits, which has a default of 64 if not specified.

Page 13: MySQL 5.7 String Functions

FIELD(str,str1,[str2,...,strN])

SELECT FIELD ('string', 'test', 'word', 'string', 'char');Output: 3

SELECT FIELD (7,5,2,3,9,7,7);Output: 5

SELECT FIELD (1,5,2,3,9,7,7);Output: 0

Returns the index (position) of str in the str1, str2, ..., strN list. Returns 0 if str is not found.

Page 14: MySQL 5.7 String Functions

FIND_IN_SET(str,strlist)

SELECT FIND_IN_SET ('string', 'test,word,string,char');Output: 3

SELECT FIND_IN_SET ('strength', 'test,word,string,char');Output: 0

SELECT FIND_IN_SET (7,'5,2,3,9,7,7');Output: 5

Returns a value in the range of 1 to N if the string str is in the string list strlist consisting of N substrings. A string list is a string composed of substrings separated by “,” characters. Returns 0 if str is not in strlist or if strlist is the empty string.

Page 15: MySQL 5.7 String Functions

FORMAT(X,D[,locale])

SELECT FORMAT(12332.123456, 4);Output: 1,332.1235

SELECT FORMAT(1332.123456, 0);Output: 1,332

SELECT FORMAT(1332.123456, 3,'it_IT');Output: 1332,123

Formats the number X to a format like '#,###,###.##', rounded to D decimal places, and returns the result as a string. If D is 0, the result has no decimal point or fractional part. Locale is optional and used for the result number's decimal point, thousands separator, and grouping between separators.

Page 16: MySQL 5.7 String Functions

FROM_BASE64(str)

SELECT TO_BASE64('abc'), FROM_BASE64(TO_BASE64('abc'));Output: JWJj,abc

Hint: If MySQL Workbench get back a BLOB icon for the FROM_BASE64 operator, Go to Edit > Preferences > SQL Editor > SQL Execution > check Treat BINARY/VARBINARY as nonbinary character string > Restart Workbench

Takes a string encoded with the base64 encoded rules used by TO_BASE64() and returns the decoded result as a binary string. The result is NULL if the argument is NULL or not a valid base-64 string.

Page 17: MySQL 5.7 String Functions

HEX(str), HEX(N)

SELECT X'616263', HEX('abc'), UNHEX(HEX('abc'));Output: abc, 616263, abc

SELECT HEX(255), CONV(HEX(255),16,10);Output: FF, 255

For a string argument str, returns a hexadecimal string representation of str where each byte of each character in str is converted to two hexadecimal digits. The inverse operation is UNHEX(). For a numeric argument N, HEX() returns a hexadecimal string representation of the value of N treated as a longlong (BIGINT) number. The inverse operation is CONV().

Page 18: MySQL 5.7 String Functions

INSERT(str,pos,len,newstr)

SELECT INSERT('Start', 3, 4, 'End');Output: StEnd

SELECT INSERT('Start', -1, 4, 'End');Output: Start

SELECT INSERT('Start', 2, 10, 'End');Output: SEnd

Returns the string str, with the substring beginning at position pos and len characters long replaced by the string newstr. Returns the original string if pos is not within the length of the string. Replaces the rest of the string from position pos if len is not within the length of the rest of the string. Returns NULL if any argument is NULL.

Page 19: MySQL 5.7 String Functions

INSTR(str,substr)

SELECT INSTR ('Start', 'art');Output: 3

SELECT INSTR ('Start', 'ort');Output: 0

Returns the position of the first occurrence of substring substr in string str.

Page 20: MySQL 5.7 String Functions

LCASE(str)

SELECT LCASE('START');Output: start

SELECT LCASE('STArt');Output: start

Is a synonym for LOWER(str)

Page 21: MySQL 5.7 String Functions

LEFT(str,len)

SELECT LEFT('Start', 1);Output: S

SELECT LEFT('Start', 4);Output: Star

Returns the leftmost len characters from the string str, or NULL if any argument is NULL.

Page 22: MySQL 5.7 String Functions

LENGTH(str)

SELECT LENGTH('Start');Output: 5

SELECT LENGTH('!Start ');Output: 7

Returns the length of the string str, measured in bytes. A multibyte character counts as multiple bytes. For a string containing five 2-byte characters, LENGTH() returns 10, whereas CHAR_LENGTH() returns 5.

Page 23: MySQL 5.7 String Functions

(NOT) LIKE pat [ESCAPE 'escape_char']

SELECT 'Start!' LIKE 'Start_';Output: 1

SELECT 'Start!' LIKE '%ta%t%';;Output: 1

SELECT 'Start!' NOT LIKE 'Start_';Output: 0

These are string comparison operators. Pattern matching using an SQL pattern. Returns 1 (TRUE) or 0 (FALSE). If either expr or pat is NULL, the result is NULL. Two wildcard can be used: % matches any number of characters, even zero characters; _ matches exactly one character. To specify a different escape character, use the ESCAPE clause.

Page 24: MySQL 5.7 String Functions

LOAD_FILE(file_name)

SELECT LOAD_FILE('/tmp/myFile') WHERE id=1Output: Text correctly read

Reads the file and returns the file contents as a string. The file must be readable and its size less than max_allowed_packet bytes, located on the server host, you must specify the full path name to the file and have the FILE privilege. its. If the file does not exist or cannot be read, the function returns NULL.

Page 25: MySQL 5.7 String Functions

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

SELECT LOCATE('al', 'Wallball');Output: 2

SELECT LOCATE('bat', 'Wallball');Output: 0

SELECT LOCATE('al', 'Wallball', 5);Output: 6

The first syntax returns the position of the first occurrence of substring substr in string str. The second syntax returns the position of the first occurrence of substring substr in string str, starting at position pos. Returns 0 if substr is not in str.

Page 26: MySQL 5.7 String Functions

LOWER(str)

SELECT LOWER('START');Output: start

SELECT LOWER('STArt');Output: start

Returns the string str with all characters changed to lowercase according to the current character set mapping. The default is latin1 (cp1252 West European).

Page 27: MySQL 5.7 String Functions

LPAD(str,len,padstr)

SELECT LPAD('Hi',4,'!!!');Output: !!Hi

SELECT LPAD('Hi',1,'!!!');Output: H

Returns the string str, left-padded with the string padstr to a length of len characters. If str is longer than len, the return value is shortened to len characters.

Page 28: MySQL 5.7 String Functions

LTRIM(str)

SELECT LTRIM(' Start ');Output: Start

Returns the string str with leading space characters removed.

Page 29: MySQL 5.7 String Functions

MAKE_SET(bits,str1[,str2,...,strN])

SELECT MAKE_SET(2,'a','b','c');Output: b

SELECT MAKE_SET(5,'a','b','c');Output: a,c

SELECT MAKE_SET(7,'a','b','c');Output: a,b,c

Returns a set value (a string containing substrings separated by “,” characters) consisting of the strings that have the corresponding bit in bits set. str1 corresponds to bit 0, str2 to bit 1, and so on. NULL values in str1, str2, …, strN are not appended to the result.

Page 30: MySQL 5.7 String Functions

MATCH (col1,col2,[...,colN]) AGAINST (expr [search_modifier])

SELECT * FROM filmWHERE MATCH (title,author)AGAINST ('database' IN NATURAL LANGUAGE MODE);Output:

MATCH() takes a comma-separated list that names the columns to be searched. AGAINST takes a string to search for, and an optional modifier that indicates what type of search to perform. The search string must be a string value that is constant during query evaluation. This rules out, for example, a table column because that can differ for each row.

Avatar Cameron

The Italian Job

Gray

Page 31: MySQL 5.7 String Functions

MID(str,pos,len)

SELECT MID('Wonderwall',5);Output: erwall

SELECT MID('Wonderwall',5,2);Output: er

Is a synonym for SUBSTRING(str,pos,len).

Page 32: MySQL 5.7 String Functions

OCT(N)

SELECT OCT(10);Output: 12

Returns a string representation of the octal value of N, where N is a longlong (BIGINT) number. This is equivalent to CONV(N,10,8). Returns NULL if N is NULL.

Page 33: MySQL 5.7 String Functions

OCTET_LENGTH(str)

SELECT OCTET_LENGTH('Start');Output: 5

SELECT OCTET_LENGTH('!Start ');Output: 7

Returns the length of the string str, measured in bytes. A multibyte character counts as multiple bytes. For a string containing five 2-byte characters, LENGTH() returns 10, whereas CHAR_LENGTH() returns 5.

Page 34: MySQL 5.7 String Functions

ORD(str)

SELECT ORD('3');Output: 51

If the leftmost character of the string str is a multibyte character, returns the code for that character, calculated from the numeric values of its constituent bytes. If the leftmost character is not a multibyte character, returns the same value as the ASCII() function.

Page 35: MySQL 5.7 String Functions

POSITION(substr IN str)

SELECT POSITION('al' IN 'Wallball');Output: 2

SELECT POSITION('bat' IN 'Wallball');Output: 0

Is a synonym for LOCATE(substr,str).

Page 36: MySQL 5.7 String Functions

QUOTE(str)

SELECT QUOTE('Can\'t!');Output: 'Can\'t!'

SELECT QUOTE(NULL);Output: NULL

Quotes a string returned enclosed by single quotation marks and with each instance of backslash (“\”), single quote (“'”), ASCII NUL, and Control+Z preceded by a backslash. If the argument is NULL, the return value is the word “NULL” without enclosing single quotation marks.

Page 37: MySQL 5.7 String Functions

(NOT) REGEXP pat

SELECT 'banana' REGEXP '^ba'; (^: Match the beginning of a string.)Output: 1

SELECT 'banana' REGEXP '^na$'; ($: Match the end of a string.)Output: 0

Performs a pattern match of a string expression expr against a pattern pat. The pattern can be an extended regular expression, the syntax for which is discussed later in this section. Returns 1 if expr matches pat; otherwise it returns 0. If either expr or pat is NULL, the result is NULL.

Page 38: MySQL 5.7 String Functions

REPEAT(str,count)

SELECT REPEAT('Test', 3);Output: TestTestTest

SELECT REPEAT('Test', -3);Output: ''

SELECT REPEAT('Test', NULL);Output: NULL

Returns a string consisting of the string str repeated count times. If count is less than 1, returns an empty string. Returns NULL if str or count are NULL.

Page 39: MySQL 5.7 String Functions

REPLACE(str,from_str,to_str)

SELECT REPLACE('banana', 'n', 't');Output: batata

SELECT REPLACE('banana', 'N', 't');Output: banana

Returns the string str with all occurrences of the string from_str replaced by the string to_str. Performs a case-sensitive match when searching for from_str.

Page 40: MySQL 5.7 String Functions

REVERSE(str)

SELECT REVERSE(12345);Output: 54321

SELECT REVERSE('abcd');Output: dcba

Returns the string str with the order of the characters reversed.

Page 41: MySQL 5.7 String Functions

RIGHT(str,len)

SELECT RIGHT('Start', 1);Output: t

SELECT RIGHT('Start', 4);Output: tart

Returns the rightmost len characters from the string str, or NULL if any argument is NULL.

Page 42: MySQL 5.7 String Functions

(NOT) RLIKE pat

SELECT 'banana' RLIKE '^ba'; (^: Match the beginning of a string.)Output: 1

SELECT 'banana' RLIKE '^na$'; ($: Match the end of a string.)Output: 0

Is a synonym for REGEXP pat.

Page 43: MySQL 5.7 String Functions

RPAD(str,len,padstr)

SELECT RPAD('Hi',4,'!!!');Output: Hi!!

SELECT RPAD('Hi',6,'!!!');Output: Hi!!!!

Returns the string str, right-padded with the string padstr to a length of len characters. If str is longer than len, the return value is shortened to len characters.

Page 44: MySQL 5.7 String Functions

RTRIM(str)

SELECT RTRIM('Start! ');Output: Start!

Returns the string str with trailing space characters removed.

Page 45: MySQL 5.7 String Functions

SOUNDEX(str)

SELECT SOUNDEX('Test');Output: T230

SELECT SOUNDEX('Start!');Output: S363

Returns a soundex string from str. Two strings that sound almost the same should have identical soundex strings. A standard soundex string is four characters long, but the SOUNDEX() function returns an arbitrarily long string. All international alphabetic characters outside the A-Z range are treated as vowels.

Page 46: MySQL 5.7 String Functions

expr1 SOUNDS LIKE expr2

SELECT ('Start!') SOUNDS LIKE('Test');Output: 0

SELECT ('Test') SOUNDS LIKE('Test');Output: 1

This the same as SOUNDEX(expr1) = SOUNDEX(expr2).

Page 47: MySQL 5.7 String Functions

SPACE(N)

SELECT SPACE(5);Output: ' '

SELECT SPACE(-5);Output: ''

Returns a string consisting of N space characters.

Page 48: MySQL 5.7 String Functions

STRCMP(expr1,expr2)

SELECT STRCMP('test', 'test1');Output: -1

SELECT STRCMP('test1', 'test');Output: 1

SELECT STRCMP('test', 'test');Output: 0

Returns 0 if expr1, expr2 are the same, -1 if the first argument is smaller than the second according to the current sort order, and 1 otherwise.

Page 49: MySQL 5.7 String Functions

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

SELECT SUBSTR('Wonderwall',5);Output: erwall

SELECT SUBSTR('Wonderwall',5,2);Output: er

SELECT SUBSTR('Wonderwall' FROM 3 FOR 4);Output: nder

Is a synonym for SUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len), SUBSTRING(str FROM pos FOR len).

Page 50: MySQL 5.7 String Functions

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

SELECT SUBSTRING('Wonderwall',5);Output: erwall

SELECT SUBSTRING('Wonderwall',5,2);Output: er

SELECT SUBSTRING('Wonderwall' FROM 3 FOR 4);Output: nder

Without a len argument return a substring from string str starting at position pos. With a len argument return a substring len characters long from string str, starting at position pos. The forms that use FROM are standard SQL syntax. If pos has a negative value, the beginning of the substring is pos characters from the end of the string, rather than the beginning.

Page 51: MySQL 5.7 String Functions

SUBSTRING_INDEX(str,delim,count)

SELECT SUBSTRING_INDEX('www.testSubstringIndex.com', '.', 2);Output: www.testSubstringIndex

SELECT SUBSTRING_INDEX('www.testSubstringIndex.com', '.', -2);Output: testSubstringIndex.com

Returns the substring from string str before count occurrences of the delimiter delim. If count is positive, everything to the left of the final delimiter (counting from the left) is returned. If count is negative, everything to the right of the final delimiter (counting from the right) is returned. Performs a case-sensitive match when searching for delim.

Page 52: MySQL 5.7 String Functions

TO_BASE64(str)

SELECT TO_BASE64('start'), FROM_BASE64(TO_BASE64('start'));Output: c3RhcnQ=, start

Converts the string argument to base-64 encoded form and returns the result as a character string with the connection character set and collation. If the argument is not a string, it is converted to a string before conversion takes place. The result is NULL if the argument is NULL. Base-64 encoded strings can be decoded using the FROM_BASE64() function.

Page 53: MySQL 5.7 String Functions

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

SELECT TRIM(' start ');Output: start

SELECT TRIM(LEADING 'x' FROM 'xxxstartxxx');Output: startxxx

SELECT TRIM(TRAILING 'abc' FROM 'xxxstartabc');Output: xxxstart

Returns the string str with all remstr prefixes or suffixes removed. If none of the specifiers BOTH, LEADING, or TRAILING is given, BOTH is assumed. remstr is optional and, if not specified, spaces are removed.

Page 54: MySQL 5.7 String Functions

UCASE(str)

SELECT UCASE('start');Output: START

Is a synonym for UPPER(str).

Page 55: MySQL 5.7 String Functions

UNHEX(str)

SELECT UNHEX('4D7953514C');Output: MySQL

SELECT UNHEX(HEX('string'));Output: string

SELECT UNHEX('HH');Output: NULL

For a string argument str, interprets each pair of characters in the argument as a hexadecimal number and converts it to the byte represented by the number. The return value is a binary string.

Page 56: MySQL 5.7 String Functions

UPPER(str)

SELECT UPPER('start');Output: START

Returns the string str with all characters changed to uppercase according to the current character set mapping. The default is latin1 (cp1252 West European).

Page 57: MySQL 5.7 String Functions

WEIGHT_STRING(str [AS {CHAR|BINARY}(N)] [LEVEL levels] [flags]) levels: N [ASC|DESC|REVERSE] [, N [ASC|DESC|REVERSE]] ...

SELECT HEX(WEIGHT_STRING(0x007fff LEVEL 1));Output: 007FFF

SELECT HEX(WEIGHT_STRING(0x007fff LEVEL 1 DESC REVERSE));Output: 0080FF

Returns the weight string for the input string. The return value is a binary string that represents the sorting and comparison value of the string.The input string, str, is a string expression. The LEVEL clause may be given to specify that the return value should contain weights for specific collation levels.