Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> аналог TSQL stuff() 
:(
    Опции темы
lv151
Дата 18.8.2009, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: 1
Всего: 2



Firebird 2.5.

Подскажите аналог stuff для фаербёрда, может как то можно извратиться со стандартными функциями?

Код

STUFF (T-SQL)

Deletes a specified length of characters and inserts another set of characters at a specified starting point.
Syntax

STUFF(character_expression, start, length, character_expression)
Arguments

character_expression
    Is an expression of character data. character_expression can be a constant, variable, or column of either character or binary data.
start
    Is an integer value that specifies the location to begin deletion and insertion. If start or length is negative, a null string is returned. If start is longer than the first character_expression, a null string is returned.
length
    Is an integer that specifies the number of characters to delete. If length is longer than the first character_expression, deletion occurs up to the last character in the last character_expression. 

Return Types

Returns character data if character_expression is one of the supported character data types. Returns binary data if character_expression is one of the supported binary data types.
Remarks

String functions can be nested.
Examples

This example returns a character string created by deleting three characters from the first string (abcdef) starting at position 2 (at b) and inserting the second string at the deletion point.

SELECT STUFF('abcdef', 2, 3, 'ijklmn')

GO

  

Here is the result set:

---------

aijklmnef

  

(1 row(s) affected)



PM MAIL   Вверх
Gluttton
Дата 18.8.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 7
Всего: 54



В нотации:
Код

stuff(ch_expr_1, start, length, ch_expr_2)


Следующий запрос, должен работать аналогично:
Код

select substring(ch_exp_1 from 1 for start)||ch_expr_2||substring(ch_exp_1 from start+length);


Данный запрос берет часть строки ch_exp_1 начиная с первой позиции и до позиции start, к полученой подстроке добавляет строку ch_exp_2 и в заключении добавляет часть строки ch_exp_1 начиная с позиции start+lehght и до конца.

На пальцах:
ch_exp_1 = abcdefg
ch_exp_2 = xyj
start = 2
lenth = 5

В результате получаем* axyjh (т.е. a+xyj+g).

Оно?

* - на сервере не проверял (нет под рукой), так что возможно будут ошибки smile .


--------------------
Слава Україні!
PM MAIL   Вверх
lv151
Дата 18.8.2009, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: 1
Всего: 2



OVERLAY() smile
PM MAIL   Вверх
Gluttton
Дата 18.8.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 7
Всего: 54



Ну и я тоже почти угадал smile

Цитата

Функция OVERLAY эквивалентна: SUBSTRING(<string1>, 1 FOR <start> - 1) || <string2> || SUBSTRING(<string1>, <start> + <length>)

Источник...


--------------------
Слава Україні!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.3732 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.