在这个章节中介绍了用于检测和操作字符串值的函数和操作符。字符串包括CHAR,VARCHAR2和CLOB类型的值。除非另外提示,在下面所列出的函数可以在所有这些类型的值上工作,但是需要注意的是当使用CHAR类型的字符串时,会出现自动在字符串后面添加空格的情况。一般来说,通过将数据转换成字符串类型的值,在这里介绍的函数也可以在非字符串类型的值上工作。

表 1. SQL String Functions and Operators
Function Return Type Description Example Result
string || string CLOB String concatenation 'Enterprise' || 'DB' EnterpriseDB
CONCAT(string, string) CLOB String concatenation 'a' || 'b' ab
HEXTORAW(varchar2) RAW Converts a VARCHAR2 value to a RAW value HEXT0RAW('303132') '012'
RAWTOHEX(raw) VARCHAR2 Converts a RAW value to a HEXADECIMAL value RAWT0HEX('012') '303132'
INSTR(string, set, [ start [, occurrence ] ]) INTEGER Finds the location of a set of characters in a string, starting at position start in the string, string, and looking for the first, second, third and so on occurrences of the set. Returns 0 if the set is not found. INSTR('PETER PIPER PICKED a PECK of PICKLED PEPPERS','PI',1,3) 30
INSTRB(string, set) INTEGER Returns the position of the set within the string. Returns 0 if set is not found. INSTRB('PETER PIPER PICKED a PECK of PICKLED PEPPERS', 'PICK') 13
INSTRB(string, set, start) INTEGER Returns the position of the set within the string, beginning at start. Returns 0 if set is not found. INSTRB('PETER PIPER PICKED a PECK of PICKLED PEPPERS','PICK', 14) 30
INSTRB(string, set, start, occurrence) INTEGER Returns the position of the specified occurrence of set within the string, beginning at start. Returns 0 if set is not found. INSTRB('PETER PIPER PICKED a PECK of PICKLED PEPPERS','PICK', 1, 2) 30
LOWER(string) CLOB Convert string to lower case LOWER('TOM') tom
SUBSTR(string, start [, count ]) CLOB Extract substring starting from start and going for count characters. If count is not specified, the string is clipped from the start till the end. SUBSTR('This is a test',6,2) is
SUBSTR(string, start [, count ]) CLOB Extract substring starting from start and going for count characters. If count is not specified, the string is clipped from the start till the end. SUBSTR('This is a test',6,2) is
SUBSTRB(string, start [, count ]) CLOB Same as SUBSTR except start and count are in number of bytes. SUBSTRB('abc',3) (assuming a double-byte character set) c
SUBSTR2(string, start[, count ]) CLOB Alias for SUBSTR. SUBSTR2('This is atest',6,2) is
SUBSTR2(string, start [, count ]) CLOB Alias for SUBSTRB. SUBSTR2('abc',3) (assuming a double-byte character set) c
SUBSTR4(string, start [, count ]) CLOB Alias for SUBSTR. SUBSTR4('This is a test',6,2) is
SUBSTR4(string, start [, count ]) CLOB Alias for SUBSTRB. SUBSTR4('abc',3) (assuming a double-byte character set) c
SUBSTRC(string, start [, count ]) CLOB Alias for SUBSTR. SUBSTRC('This is a test',6,2) is
SUBSTRC(string, start [, count ]) CLOB Alias for SUBSTRB. SUBSTRC('abc',3) (assuming a double-byte character set) c
TRIM([ LEADING | TRAILING | BOTH ] [ characters ] FROM string) CLOB Remove the longest string containing only the characters (a space by default) from the start/end/both ends of the string. TRIM(B0TH 'x' FROM 'xTomxx') Tom
LTRIM(string [, set]) CLOB Removes all the characters specified in set from the left of a given string. If set is not specified, a blank space is used as default. LTRIM('abcdefghi', 'abc') defghi
RTRIM(string [, set]) CLOB Removes all the characters specified in set from the right of a given string. If set is not specified, a blank space is used as default. RTRIM('abcdefghi', 'ghi') abcdef
UPPER(string) CLOB Convert string to upper case UPPER('tom') TOM

在下面的表格中列出了另外一些允许使用的字符串操作函数。它们中的一些是用于内部实现在表 1表中列出,符合SQL标准的字符串函数。

Function Return Type Description Example Result
ASCII(string) INTEGER ASCII code of the first byte of the argument ASCII('x') 120
CHR(INTEGER) CLOB Character with the given ASCII code CHR(65) A
DEC0DE(expr, exprla, exprlb [, expr2a, expr2b ]... [, default ]) Same as argument types of expr1b, expr2b,..., default Finds first match of expr with expr1a, expr2a, etc. When match found, returns corresponding parameter pair, expr1b, expr2b, etc. If no match found, returns default. If no match found and default not specified, returns null. DEC0DE(3, 1,'One', 2,'Two', 3,'Three', 'Not found') Three
INITCAP(string) CLOB Convert the first letter of each word to uppercase and the rest to lowercase. Words are sequences of alphanumeric characters separated by non- alphanumeric characters. INITCAP('hi THOMAS') Hi Thomas
LENGTH INTEGER Returns the number of characters in a string value. LENGTH('Coted''Azur') 11
LENGTHC INTEGER This function is identical in functionality to LENGTH; the function name is supported for compatibility. LENGTHC ('Cote d''Azur') 11
LENGTH2 INTEGER This function is identical in functionality to LENGTH; the function name is supported for compatibility. LENGTH2 ('Cote d''Azur') 11
LENGTH4 INTEGER This function is identical in functionality to LENGTH; the function name is supported for compatibility. LENGTH4 ('Cote d''Azur') 11
LENGTHB INTEGER Returns the number of bytes required to hold the given value. LENGTHB ('Cote d''Azur') 12
LPAD(string, length INTEGER [, fill ]) CLOB Fill up string to size, length by prepending the characters, fill (a space by default). If string is already longer than length then it is truncated (on the right). LPAD('hi', 5, 'xy') xyxhi
REPLACE(string, search string [, replace string ] CLOB Replaces one value in a string with another. If you do not specify a value for replace string, the search_string value when found, is removed. REPLACE( 'GEORGE', 'GE', 'EG') EGOREG
RPAD(string, length INTEGER [, fill ]) CLOB Fill up string to size, length by appending the characters, fill (a space by default). If string is already longer than length then it is truncated. RPAD('hi', 5, 'xy') hixyx
TRANSLATE(string, from, to) CLOB Any character in string that matches a character in the from set is replaced by the corresponding character in the to set. TRANSLATE('12345', '14', 'ax') a23x5