String functions perform conversion, extraction, or manipulation operations on strings, or return information about strings.
When working in a multibyte character set, check carefully whether the function being used returns information concerning characters or bytes.
Most of the string functions accept binary data (hexadecimal strings) in the string-expr parameter, but some of the functions, such as LCASE, UCASE, LOWER, and LTRIM, expect the string expression to be a character string.
Unless you supply a constant LENGTH argument to a function that produces a VARCHAR result (such as SPACE or REPEAT), the default length is the maximum allowed. See the “Field Size” column in Table 8-1.
Sybase IQ queries containing one or more of such functions might return one of the following errors:
ASA Error -1009080: Key doesn't fit on a single database page: 65560(4, 1)
ASA Error -1009119: Record size too large for database page size
For example:
SELECT COUNT(*) FROM test1 a WHERE (a.col1 + SPACE(4-LENGTH(a.col1)) + a.col2 + space(2- LENGTH(a.col2))) IN (SELECT (b.col3) FROM test1 b);
To avoid such errors, cast the function result with an appropriate maximum length; for example:
SELECT COUNT(*) FROM test1 a WHERE (a.col1 + CAST(SPACE(4-LENGTH(a.col1)) AS VARCHAR(4)) + a.col2 + CAST(SPACE(2-LENGTH (a.col2)) AS VARCHAR(4))) IN (SELECT (b.col3) FROM test1 b);
The errors are more likely with an IQ page size of 64K or a multibyte collation.
Table 5-9 lists string functions and their parameters.
| String function | Parameters | 
|---|---|
| ASCII | ( string-expr ) | 
| BIT_LENGTH | ( column-name ) | 
| BYTE_LENGTH | ( string-expr ) | 
| CHAR | ( integer-expr ) | 
| CHAR_LENGTH | ( string-expr ) | 
| CHARINDEX | ( string-expr1, string-expr2 ) | 
| DIFFERENCE | ( string-expr1, string-expr2 ) | 
| INSERTSTR | ( numeric-expr, string-expr1, string-expr2 ) | 
| LCASE | ( string-expr ) | 
| LEFT | ( string-expr, numeric-expr ) | 
| LEN | ( string-expr ) | 
| LENGTH | ( string-expr ) | 
| LOCATE | ( string-expr1, string-expr2 [, numeric-expr ] ) | 
| LOWER | ( string-expr ) | 
| LTRIM | ( string-expr ) | 
| OCTET_LENGTH | ( column-name ) | 
| PATINDEX | ( '%pattern%', string_expr ) | 
| REPEAT | ( string-expr, numeric-expr ) | 
| REPLACE | ( original-string, search-string, replace-string ) | 
| REVERSE | ( expression | uchar_expr ) | 
| REPLICATE | ( string-expr, integer-expr ) | 
| RIGHT | ( string-expr, numeric-expr ) | 
| RTRIM | ( string-expr ) | 
| SIMILAR | ( string-expr1, string-expr2 ) | 
| SORTKEY | ( string_expr [ collation-name ] ) | 
| SOUNDEX | ( string-expr ) | 
| SPACE | ( integer-expr ) | 
| STR | ( numeric_expr [, length [, decimal ] ] ) | 
| STR_REPLACE | ( string_expr1, string_expr2 , string_expr3 ) | 
| STRING | ( string1 [, string2, ..., string99 ] ) | 
| STUFF | ( string-expr1, start, length, string-expr2 ) | 
| SUBSTRING | ( string-expr, integer-expr [, integer-expr ] ) | 
| TRIM | ( string-expr ) | 
| UCASE | ( string-expr ) | 
| UPPER | ( string-expr ) |