Строковые функции

В следующей таблице перечислены функции обработки строк. Приложение может определить, какие строковые функции поддерживаются драйвером, вызвав SQLGetInfo с типом сведений SQL_STRING_FUNCTIONS.

Замечания

Аргументы, обозначаемые как string_exp , могут быть именем столбца, символьного строкового литерала или результатом другой скалярной функции, где базовый тип данных может быть представлен как SQL_CHAR, SQL_VARCHAR или SQL_LONGVARCHAR.

Аргументы, обозначаемые как character_exp , являются строкой символов переменной длины.

Аргументы, обозначаемые как начальная, длина или число, могут быть числовым литеральным литералом или результатом другой скалярной функции, где базовый тип данных может быть представлен как SQL_TINYINT, SQL_SMALLINT или SQL_INTEGER.

Строковые функции, перечисленные здесь, основаны на 1; То есть первый символ в строке — 1.

В ODBC 3.0 были добавлены скалярные функции BIT_LENGTH, CHAR_LENGTH, CHARACTER_LENGTH, OCTET_LENGTH и POSITION.

Function Description
ASCII(string_exp) (ODBC 1.0) Возвращает значение кода ASCII самого левого символа string_exp в виде целого числа.
BIT_LENGTH(string_exp) (ODBC 3.0) Возвращает длину строкового выражения в битах.

Не работает только для строковых типов данных, поэтому неявно преобразуется string_exp в строку, но вместо этого возвращает (внутренний) размер любого заданного типа данных.
CHAR(code) (ODBC 1.0) Возвращает символ, имеющий значение кода ASCII, указанное в коде. Значение кода должно быть от 0 до 255; в противном случае возвращаемое значение зависит от источника данных.
CHAR_LENGTH(string_exp) (ODBC 3.0) Возвращает длину строкового выражения в символах, если это строковое выражение имеет символьный тип данных; в противном случае возвращает длину строкового выражения в байтах (наименьшее целое число не меньше числа бит, деленного на 8). (Эта функция аналогична функции CHARACTER_LENGTH.)
CHARACTER_LENGTH(string_exp) (ODBC 3.0) Возвращает длину строкового выражения в символах, если это строковое выражение имеет символьный тип данных; в противном случае возвращает длину строкового выражения в байтах (наименьшее целое число не меньше числа бит, деленного на 8). (Эта функция совпадает с функцией CHAR_LENGTH.)
CONCAT(string_exp1,string_exp2) (ODBC 1.0) Возвращает символьную строку, которая является результатом объединения string_exp2 к string_exp1. Полученная в результате строка зависит от СУБД. Например, если столбец, представленный string_exp1 содержит значение NULL, DB2 вернет ЗНАЧЕНИЕ NULL, но SQL Server вернет строку, не являющаяся null.
DIFFERENCE(string_exp1,string_exp2) (ODBC 2.0) Возвращает целочисленное значение, указывающее разницу между значениями, возвращаемыми функцией SOUNDEX для string_exp1 и string_exp2.
INSERT(string_exp1, start, length, string_exp2) (ODBC 1.0) Возвращает строку символов, в которой символы длины были удалены из string_exp1, начиная с начала и где string_exp2 был вставлен в string_exp, начиная с начала.
LCASE(string_exp) (ODBC 1.0) Возвращает строку, равную этой строке в string_exp, со всеми символами верхнего регистра, преобразованными в нижний регистр.
LEFT(string_exp, count) (ODBC 1.0) Возвращает самый левый число символов string_exp.
LENGTH(string_exp) (ODBC 1.0) Возвращает количество символов в string_exp, за исключением конечных пустых.

ФУНКЦИЯ LENGTH принимает только строки. Поэтому неявно преобразует string_exp в строку и возвращает длину этой строки (а не внутренний размер типа данных).
LOCATE(string_exp1, string_exp2[, start]) (ODBC 1.0) Возвращает начальную позицию первого вхождения string_exp1 в string_exp2. Поиск первого вхождения string_exp1 начинается с первой позиции символа в string_exp2, если не указан необязательный аргумент, start. Если задано начало , поиск начинается с позиции символа, указанной значением начала. Первая позиция символа в string_exp2 указывается значением 1. Если string_exp1 не найден в string_exp2, возвращается значение 0.

Если приложение может вызвать скалярную функцию LOCATE с помощью string_exp1, string_exp2 и запуска аргументов, драйвер возвращает SQL_FN_STR_LOCATE при вызове SQLGetInfo с параметром SQL_STRING_FUNCTIONS. Если приложение может вызвать скалярную функцию LOCATE только с аргументами string_exp1 и string_exp2, драйвер возвращает SQL_FN_STR_LOCATE_2 при вызове SQLGetInfo с параметром SQL_STRING_FUNCTIONS. Драйверы, поддерживающие вызов функции LOCATE с двумя или тремя аргументами, возвращают как SQL_FN_STR_LOCATE, так и SQL_FN_STR_LOCATE_2.
LTRIM(string_exp) (ODBC 1.0) Возвращает символы string_exp с удаленными пустыми в начале.
OCTET_LENGTH(string_exp) (ODBC 3.0) Возвращает длину строкового выражения в байтах. Результатом является наименьшее целочисленное значение, не меньшее, чем число битов, разделенное на 8.

Не работает только для строковых типов данных, поэтому неявно преобразуется string_exp в строку, но вместо этого возвращает (внутренний) размер любого заданного типа данных.
POSITION(character_exp INcharacter_exp) (ODBC 3.0) Возвращает позицию первого символьного выражения во втором символьном выражении. Результатом является точное число с определенной реализацией точностью и масштабом 0.
REPEAT(string_exp,count) (ODBC 1.0) Возвращает символьную строку, состоящую из string_exp повторяющихся времени подсчета .
REPLACE(string_exp1, string_exp2, string_exp3) (ODBC 1.0) Выполните поиск string_exp1 string_exp2 и замените string_exp3.
RIGHT(string_exp, count) (ODBC 1.0) Возвращает наиболее правые символы счетчика string_exp.
RTRIM(string_exp) (ODBC 1.0) Возвращает символы string_exp с удаленными конечными пробелами.
SOUNDEX(string_exp) (ODBC 2.0) Возвращает строку, зависящую от источника данных, представляющую звук слов в string_exp. Например, SQL Server возвращает 4-значный код SOUNDEX; Oracle возвращает фонетическое представление каждого слова.
SPACE(count) (ODBC 2.0) Возвращает символьную строку, состоящую из пространств счетчика.
SUBSTRING(string_exp, start, length**** (ODBC 1.0) Возвращает символьную строку, которая является производным от string_exp, начиная с позиции символа, указанной в началедля символов длины.
UCASE(string_exp) (ODBC 1.0) Возвращает строку, равную этой строке в string_exp, со всеми строчными символами, преобразованными в верхний регистр.