Mysql String Functions
| Posted in Programming | Posted on 25-05-2008
0
| Name | Description |
|---|---|
ASCII() |
Return numeric value of left-most character |
BIN() |
Return a string representation of the argument |
BIT_LENGTH() |
Return length of argument in bits |
CHAR_LENGTH() |
Return number of characters in argument |
CHAR() |
Return the character for each integer passed |
CHARACTER_LENGTH() |
A synonym for CHAR_LENGTH() |
CONCAT_WS() |
Return concatenate with separator |
CONCAT() |
Return concatenated string |
ELT() |
Return string at index number |
EXPORT_SET() |
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 |
FIELD() |
Return the index (position) of the first argument in the subsequent arguments |
FIND_IN_SET() |
Return the index position of the first argument within the second argument |
FORMAT() |
Return a number formatted to specified number of decimal places |
HEX() |
Return a hexadecimal representation of a decimal or string value |
INSERT() |
Insert a substring at the specified position up to the specified number of characters |
INSTR() |
Return the index of the first occurrence of substring |
LCASE() |
Synonym for LOWER() |
LEFT() |
Return the leftmost number of characters as specified |
LENGTH() |
Return the length of a string in bytes |
LIKE |
Simple pattern matching |
LOAD_FILE() |
Load the named file |
LOCATE() |
Return the position of the first occurrence of substring |
LOWER() |
Return the argument in lowercase |
LPAD() |
Return the string argument, left-padded with the specified string |
LTRIM() |
Remove leading spaces |
MAKE_SET() |
Return a set of comma-separated strings that have the corresponding bit in bits set |
MATCH |
Perform full-text search |
MID() |
Return a substring starting from the specified position |
NOT LIKE |
Negation of simple pattern matching |
NOT REGEXP |
Negation of REGEXP |
OCTET_LENGTH() |
A synonym for LENGTH() |
ORD() |
Return character code for leftmost character of the argument |
POSITION() |
A synonym for LOCATE() |
QUOTE() |
Escape the argument for use in an SQL statement |
REGEXP |
Pattern matching using regular expressions |
REPEAT() |
Repeat a string the specified number of times |
REPLACE() |
Replace occurrences of a specified string |
REVERSE() |
Reverse the characters in a string |
RIGHT() |
Return the specified rightmost number of characters |
RLIKE |
Synonym for REGEXP |
RPAD() |
Append string the specified number of times |
RTRIM() |
Remove trailing spaces |
SOUNDEX() |
Return a soundex string |
SOUNDS LIKE(v4.1.0) |
Compare sounds |
SPACE() |
Return a string of the specified number of spaces |
STRCMP() |
Compare two strings |
SUBSTR() |
Return the substring as specified |
SUBSTRING_INDEX() |
Return a substring from a string before the specified number of occurrences of the delimiter |
SUBSTRING() |
Return the substring as specified |
TRIM() |
Remove leading and trailing spaces |
UCASE() |
Synonym for UPPER() |
UNHEX()(v4.1.2) |
Convert each pair of hexadecimal digits to a character |
UPPER() |
Convert to uppercase |
String-valued functions return NULL if the length of the result would be greater than the value of the max_allowed_packet system variable.
For functions that operate on string positions, the first position is numbered 1.
For functions that take length arguments, non-integer arguments are rounded to the nearest integer.
-
ASCII(Returns the numeric value of the leftmost character of the stringstr)str. Returns0ifstris the empty string. ReturnsNULLifstrisNULL.ASCII()works for 8-bit characters.mysql>
SELECT ASCII('2');-> 50 mysql>SELECT ASCII(2);-> 50 mysql>SELECT ASCII('dx');-> 100See also the
ORD()function. -
BIN(Returns a string representation of the binary value ofN)N, whereNis a longlong (BIGINT) number. This is equivalent toCONV(. ReturnsN,10,2)NULLifNisNULL.mysql>
SELECT BIN(12);-> '1100' -
BIT_LENGTH(Returns the length of the stringstr)strin bits.mysql>
SELECT BIT_LENGTH('text');-> 32 -
CHAR(N,... [USINGcharset_name])CHAR()interprets each argumentNas an integer and returns a string consisting of the characters given by the code values of those integers.NULLvalues are skipped.mysql>
SELECT CHAR(77,121,83,81,'76');-> 'MySQL' mysql>SELECT CHAR(77,77.3,'77.3');-> 'MMM'As of MySQL 5.0.15,
CHAR()arguments larger than 255 are converted into multiple result bytes. For example,CHAR(256)is equivalent toCHAR(1,0), andCHAR(256*256)is equivalent toCHAR(1,0,0):mysql>
SELECT HEX(CHAR(1,0)), HEX(CHAR(256));+----------------+----------------+ | HEX(CHAR(1,0)) | HEX(CHAR(256)) | +----------------+----------------+ | 0100 | 0100 | +----------------+----------------+ mysql>SELECT HEX(CHAR(1,0,0)), HEX(CHAR(256*256));+------------------+--------------------+ | HEX(CHAR(1,0,0)) | HEX(CHAR(256*256)) | +------------------+--------------------+ | 010000 | 010000 | +------------------+--------------------+By default,
CHAR()returns a binary string. To produce a string in a given character set, use the optionalUSINGclause:mysql>
SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8));+---------------------+--------------------------------+ | CHARSET(CHAR(0x65)) | CHARSET(CHAR(0x65 USING utf8)) | +---------------------+--------------------------------+ | binary | utf8 | +---------------------+--------------------------------+If
USINGis given and the result string is illegal for the given character set, a warning is issued. Also, if strict SQL mode is enabled, the result fromCHAR()becomesNULL.Before MySQL 5.0.15,
CHAR()returns a string in the connection character set and theUSINGclause is unavailable. In addition, each argument is interpreted modulo 256, soCHAR(256)andCHAR(256*256)both are equivalent toCHAR(0). -
CHAR_LENGTH(Returns the length of the stringstr)str, measured in characters. A multi-byte character counts as a single character. This means that for a string containing five two-byte characters,LENGTH()returns10, whereasCHAR_LENGTH()returns5. -
CHARACTER_LENGTH(str)CHARACTER_LENGTH()is a synonym forCHAR_LENGTH(). -
CONCAT(Returns the string that results from concatenating the arguments. May have one or more arguments. If all arguments are non-binary strings, the result is a non-binary string. If the arguments include any binary strings, the result is a binary string. A numeric argument is converted to its equivalent binary string form; if you want to avoid that, you can use an explicit type cast, as in this example:str1,str2,...)SELECT CONCAT(CAST(
int_colAS CHAR),char_col);CONCAT()returnsNULLif any argument isNULL.mysql>
SELECT CONCAT('My', 'S', 'QL');-> 'MySQL' mysql>SELECT CONCAT('My', NULL, 'QL');-> NULL mysql>SELECT CONCAT(14.3);-> '14.3' -
CONCAT_WS(separator,str1,str2,...)CONCAT_WS()stands for Concatenate With Separator and is a special form ofCONCAT(). 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, as can the rest of the arguments. If the separator isNULL, the result isNULL.mysql>
SELECT CONCAT_WS(',','First name','Second name','Last Name');-> 'First name,Second name,Last Name' mysql>SELECT CONCAT_WS(',','First name',NULL,'Last Name');-> 'First name,Last Name'CONCAT_WS()does not skip empty strings. However, it does skip anyNULLvalues after the separator argument. -
ELT(ReturnsN,str1,str2,str3,...)str1ifN=1,str2ifN=2, and so on. ReturnsNULLifNis less than1or greater than the number of arguments.ELT()is the complement ofFIELD().mysql>
SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo');-> 'ej' mysql>SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo');-> 'foo' -
EXPORT_SET(Returns a string such that for every bit set in the valuebits,on,off[,separator[,number_of_bits]])bits, you get anonstring and for every bit not set in the value, you get anoffstring. Bits inbitsare examined from right to left (from low-order to high-order bits). Strings are added to the result from left to right, separated by theseparatorstring (the default being the comma character “,”). The number of bits examined is given bynumber_of_bits(defaults to 64).mysql>
SELECT EXPORT_SET(5,'Y','N',',',4);-> 'Y,N,Y,N' mysql>SELECT EXPORT_SET(6,'1','0',',',10);-> '0,1,1,0,0,0,0,0,0,0' -
FIELD(Returns the index (position) ofstr,str1,str2,str3,...)strin thestr1,str2,str3,...list. Returns0ifstris not found.If all arguments toFIELD()are strings, all arguments are compared as strings. If all arguments are numbers, they are compared as numbers. Otherwise, the arguments are compared as double.IfstrisNULL, the return value is0becauseNULLfails equality comparison with any value.FIELD()is the complement ofELT().mysql>
SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');-> 2 mysql>SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');-> 0 -
FIND_IN_SET(Returns a value in the range of 1 tostr,strlist)Nif the stringstris in the string liststrlistconsisting ofNsubstrings. A string list is a string composed of substrings separated by “,” characters. If the first argument is a constant string and the second is a column of typeSET, theFIND_IN_SET()function is optimized to use bit arithmetic. Returns0ifstris not instrlistor ifstrlistis the empty string. ReturnsNULLif either argument isNULL. This function does not work properly if the first argument contains a comma (“,”) character.mysql>
SELECT FIND_IN_SET('b','a,b,c,d');-> 2 -
FORMAT(Formats the numberX,D)Xto a format like'#,###,###.##', rounded toDdecimal places, and returns the result as a string. IfDis0, the result has no decimal point or fractional part.mysql>
SELECT FORMAT(12332.123456, 4);-> '12,332.1235' mysql>SELECT FORMAT(12332.1,4);-> '12,332.1000' mysql>SELECT FORMAT(12332.2,0);-> '12,332' -
HEX(IfN_or_S)N_or_Sis a number, returns a string representation of the hexadecimal value ofN, whereNis a longlong (BIGINT) number. This is equivalent toCONV(.IfN,10,16)N_or_Sis a string, returns a hexadecimal string representation ofN_or_Swhere each character inN_or_Sis converted to two hexadecimal digits. The inverse of this operation is performed by theUNHEX()function.mysql>
SELECT HEX(255);-> 'FF' mysql>SELECT 0x616263;-> 'abc' mysql>SELECT HEX('abc');-> 616263 -
INSERT(Returns the stringstr,pos,len,newstr)str, with the substring beginning at positionposandlencharacters long replaced by the stringnewstr. Returns the original string ifposis not within the length of the string. Replaces the rest of the string from positionposiflenis not within the length of the rest of the string. ReturnsNULLif any argument isNULL.mysql>
SELECT INSERT('Quadratic', 3, 4, 'What');-> 'QuWhattic' mysql>SELECT INSERT('Quadratic', -1, 4, 'What');-> 'Quadratic' mysql>SELECT INSERT('Quadratic', 3, 100, 'What');-> 'QuWhat'This function is multi-byte safe.
-
INSTR(Returns the position of the first occurrence of substringstr,substr)substrin stringstr. This is the same as the two-argument form ofLOCATE(), except that the order of the arguments is reversed.mysql>
SELECT INSTR('foobarbar', 'bar');-> 4 mysql>SELECT INSTR('xbar', 'foobar');-> 0This function is multi-byte safe, and is case sensitive only if at least one argument is a binary string.
-
LCASE(str)LCASE()is a synonym forLOWER(). -
LEFT(Returns the leftmoststr,len)lencharacters from the stringstr, orNULLif any argument isNULL.mysql>
SELECT LEFT('foobarbar', 5);-> 'fooba' -
LENGTH(Returns the length of the stringstr)str, measured in bytes. A multi-byte character counts as multiple bytes. This means that for a string containing five two-byte characters,LENGTH()returns10, whereasCHAR_LENGTH()returns5.mysql>
SELECT LENGTH('text');-> 4 -
LOAD_FILE(Reads the file and returns the file contents as a string. To use this function, the file must be located on the server host, you must specify the full pathname to the file, and you must have thefile_name)FILEprivilege. The file must be readable by all and its size less thanmax_allowed_packetbytes.If the file does not exist or cannot be read because one of the preceding conditions is not satisfied, the function returnsNULL.As of MySQL 5.0.19, thecharacter_set_filesystemsystem variable controls interpretation of filenames that are given as literal strings.mysql>
UPDATE tSET blob_col=LOAD_FILE('/tmp/picture')WHERE id=1; -
LOCATE(,substr,str)LOCATE(The first syntax returns the position of the first occurrence of substringsubstr,str,pos)substrin stringstr. The second syntax returns the position of the first occurrence of substringsubstrin stringstr, starting at positionpos. Returns0ifsubstris not instr.mysql>
SELECT LOCATE('bar', 'foobarbar');-> 4 mysql>SELECT LOCATE('xbar', 'foobar');-> 0 mysql>SELECT LOCATE('bar', 'foobarbar', 5);-> 7This function is multi-byte safe, and is case-sensitive only if at least one argument is a binary string.
-
LOWER(Returns the stringstr)strwith all characters changed to lowercase according to the current character set mapping. The default islatin1(cp1252 West European).mysql>
SELECT LOWER('QUADRATICALLY');-> 'quadratically'LOWER()(andUPPER()) are ineffective when applied to binary strings (BINARY,VARBINARY,BLOB). To perform lettercase conversion, convert the string to a non-binary string:mysql>
SET @str = BINARY 'New York';mysql>SELECT LOWER(@str), LOWER(CONVERT(@str USING latin1));+-------------+-----------------------------------+ | LOWER(@str) | LOWER(CONVERT(@str USING latin1)) | +-------------+-----------------------------------+ | New York | new york | +-------------+-----------------------------------+This function is multi-byte safe.
-
LPAD(Returns the stringstr,len,padstr)str, left-padded with the stringpadstrto a length oflencharacters. Ifstris longer thanlen, the return value is shortened tolencharacters.mysql>
SELECT LPAD('hi',4,'??');-> '??hi' mysql>SELECT LPAD('hi',1,'??');-> 'h' -
LTRIM(Returns the stringstr)strwith leading space characters removed.mysql>
SELECT LTRIM(' barbar');-> 'barbar'This function is multi-byte safe.
-
MAKE_SET(Returns a set value (a string containing substrings separated by “bits,str1,str2,...),” characters) consisting of the strings that have the corresponding bit inbitsset.str1corresponds to bit 0,str2to bit 1, and so on.NULLvalues instr1,str2,...are not appended to the result.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(is a synonym forstr,pos,len)SUBSTRING(.str,pos,len) -
OCT(Returns a string representation of the octal value ofN)N, whereNis a longlong (BIGINT) number. This is equivalent toCONV(. ReturnsN,10,8)NULLifNisNULL.mysql>
SELECT OCT(12);-> '14' -
OCTET_LENGTH(str)OCTET_LENGTH()is a synonym forLENGTH(). -
ORD(If the leftmost character of the stringstr)stris a multi-byte character, returns the code for that character, calculated from the numeric values of its constituent bytes using this formula:(1st byte code) + (2nd byte code × 256) + (3rd byte code × 2562) ...
If the leftmost character is not a multi-byte character,
ORD()returns the same value as theASCII()function.mysql>
SELECT ORD('2');-> 50 -
POSITION(substrINstr)POSITION(is a synonym forsubstrINstr)LOCATE(.substr,str) -
QUOTE(Quotes a string to produce a result that can be used as a properly escaped data value in an SQL statement. The string is returned enclosed by single quotes and with each instance of single quote (“str)'”), backslash (“\”), ASCIINUL, and Control-Z preceded by a backslash. If the argument isNULL, the return value is the word “NULL” without enclosing single quotes.mysql>
SELECT QUOTE('Don't!');-> 'Don't!' mysql>SELECT QUOTE(NULL);-> NULL -
REPEAT(Returns a string consisting of the stringstr,count)strrepeatedcounttimes. Ifcountis less than 1, returns an empty string. ReturnsNULLifstrorcountareNULL.mysql>
SELECT REPEAT('MySQL', 3);-> 'MySQLMySQLMySQL' -
REPLACE(Returns the stringstr,from_str,to_str)strwith all occurrences of the stringfrom_strreplaced by the stringto_str.REPLACE()performs a case-sensitive match when searching forfrom_str.mysql>
SELECT REPLACE('www.mysql.com', 'w', 'Ww');-> 'WwWwWw.mysql.com'This function is multi-byte safe.
-
REVERSE(Returns the stringstr)strwith the order of the characters reversed.mysql>
SELECT REVERSE('abc');-> 'cba'This function is multi-byte safe.
-
RIGHT(Returns the rightmoststr,len)lencharacters from the stringstr, orNULLif any argument isNULL.mysql>
SELECT RIGHT('foobarbar', 4);-> 'rbar'This function is multi-byte safe.
-
RPAD(Returns the stringstr,len,padstr)str, right-padded with the stringpadstrto a length oflencharacters. Ifstris longer thanlen, the return value is shortened tolencharacters.mysql>
SELECT RPAD('hi',5,'?');-> 'hi???' mysql>SELECT RPAD('hi',1,'?');-> 'h'This function is multi-byte safe.
-
RTRIM(Returns the stringstr)strwith trailing space characters removed.mysql>
SELECT RTRIM('barbar ');-> 'barbar'This function is multi-byte safe.
-
SOUNDEX(Returns a soundex string fromstr)str. Two strings that sound almost the same should have identical soundex strings. A standard soundex string is four characters long, but theSOUNDEX()function returns an arbitrarily long string. You can useSUBSTRING()on the result to get a standard soundex string. All non-alphabetic characters instrare ignored. All international alphabetic characters outside the A-Z range are treated as vowels.Important
When using
SOUNDEX(), you should be aware of the following limitations:- This function, as currently implemented, is intended to work well with strings that are in the English language only. Strings in other languages may not produce reliable results.
- This function is not guaranteed to provide consistent results with strings that use multi-byte character sets, including
utf-8.We hope to remove these limitations in a future release. See Bug#22638 for more information.
mysql>
SELECT SOUNDEX('Hello');-> 'H400' mysql>SELECT SOUNDEX('Quadratically');-> 'Q36324'Note
This function implements the original Soundex algorithm, not the more popular enhanced version (also described by D. Knuth). The difference is that original version discards vowels first and duplicates second, whereas the enhanced version discards duplicates first and vowels second.
-
This is the same asexpr1SOUNDS LIKEexpr2SOUNDEX(.expr1) = SOUNDEX(expr2) -
SPACE(Returns a string consisting ofN)Nspace characters.mysql>
SELECT SPACE(6);-> ' ' -
SUBSTR(,str,pos)SUBSTR(,strFROMpos)SUBSTR(,str,pos,len)SUBSTR(strFROMposFORlen)SUBSTR()is a synonym forSUBSTRING(). -
SUBSTRING(,str,pos)SUBSTRING(,strFROMpos)SUBSTRING(,str,pos,len)SUBSTRING(The forms without astrFROMposFORlen)lenargument return a substring from stringstrstarting at positionpos. The forms with alenargument return a substringlencharacters long from stringstr, starting at positionpos. The forms that useFROMare standard SQL syntax. It is also possible to use a negative value forpos. In this case, the beginning of the substring isposcharacters from the end of the string, rather than the beginning. A negative value may be used forposin any of the forms of this function.For all forms ofSUBSTRING(), the position of the first character in the string from which the substring is to be extracted is reckoned as1.mysql>
SELECT SUBSTRING('Quadratically',5);-> 'ratically' mysql>SELECT SUBSTRING('foobarbar' FROM 4);-> 'barbar' mysql>SELECT SUBSTRING('Quadratically',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'This function is multi-byte safe.
If
lenis less than 1, the result is the empty string. -
SUBSTRING_INDEX(Returns the substring from stringstr,delim,count)strbeforecountoccurrences of the delimiterdelim. Ifcountis positive, everything to the left of the final delimiter (counting from the left) is returned. Ifcountis negative, everything to the right of the final delimiter (counting from the right) is returned.SUBSTRING_INDEX()performs a case-sensitive match when searching fordelim.mysql>
SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);-> 'www.mysql' mysql>SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);-> 'mysql.com'This function is multi-byte safe.
-
TRIM([{BOTH | LEADING | TRAILING} [,remstr] FROM]str)TRIM([Returns the stringremstrFROM]str)strwith allremstrprefixes or suffixes removed. If none of the specifiersBOTH,LEADING, orTRAILINGis given,BOTHis assumed.remstris optional and, if not specified, spaces are removed.mysql>
SELECT TRIM(' bar ');-> 'bar' mysql>SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');-> 'barxxx' mysql>SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');-> 'bar' mysql>SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');-> 'barx'This function is multi-byte safe.
-
UCASE(str)UCASE()is a synonym forUPPER(). -
UNHEX(Performs the inverse operation ofstr)HEX(. That is, it interprets each pair of hexadecimal digits in the argument as a number and converts it to the character represented by the number. The resulting characters are returned as a binary string.str)mysql>
SELECT UNHEX('4D7953514C');-> 'MySQL' mysql>SELECT 0x4D7953514C;-> 'MySQL' mysql>SELECT UNHEX(HEX('string'));-> 'string' mysql>SELECT HEX(UNHEX('1267'));-> '1267'The characters in the argument string must be legal hexadecimal digits:
'0'..'9','A'..'F','a'..'f'. IfUNHEX()encounters any non-hexadecimal digits in the argument, it returnsNULL:mysql>
SELECT UNHEX('GG');+-------------+ | UNHEX('GG') | +-------------+ | NULL | +-------------+A
NULLresult can occur if the argument toUNHEX()is aBINARYcolumn, because values are padded with 0×00 bytes when stored but those bytes are not stripped on retrieval. For example'aa'is stored into aCHAR(3)column as'aa 'and retrieved as'aa'(with the trailing pad space stripped), soUNHEX()for the column value returns'A'. By contrast'aa'is stored into aBINARY(3)column as'aa\0'and retrieved as'aa\0'(with the trailing pad0x00byte not stripped).'\0'is not a legal hexadecimal digit, soUNHEX()for the column value returnsNULL. -
UPPER(Returns the stringstr)strwith all characters changed to uppercase according to the current character set mapping. The default islatin1(cp1252 West European).mysql>
SELECT UPPER('Hej');-> 'HEJ'UPPER()is ineffective when applied to binary strings (BINARY,VARBINARY,BLOB). The description ofLOWER()shows how to perform lettercase conversion of binary strings.This function is multi-byte safe.
-
* copied directly from: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html




