powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Select Replace
25 сообщений из 78, страница 1 из 4
Select Replace
    #39613138
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
SELECT REPLACE('Заменить1 , Заменить2 , Заменить3',t.ЧтоЗаменить,t.Замена)
FROM t


результат в t-sql: 'Заменили1 , Заменили2 , Заменили3'
как такое делается в firebird? все перерыл
...
Рейтинг: 0 / 0
Select Replace
    #39613156
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateкак такое делается в firebird?

Именно так и делается. doc/README.builtin_functions.txt
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Select Replace
    #39613159
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
SELECT @StrParam=REPLACE(@StrParam,t.ЧтоЗаменить,t.Замена)
FROM t


ну хорошо а как тогда вот это перевести на firebird
...
Рейтинг: 0 / 0
Select Replace
    #39613166
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate
Код: sql
1.
2.
SELECT @StrParam=REPLACE(@StrParam,t.ЧтоЗаменить,t.Замена)
FROM t


ну хорошо а как тогда вот это перевести на firebird
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
FOR
    SELECT REPLACE(:StrParam, t.ЧтоЗаменить, t.Замена)
      FROM t
      INTO: StrParam
  DO
    BEGIN
    .
    .
    .
    END
...
Рейтинг: 0 / 0
Select Replace
    #39613168
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да я видел эту конструкцию но я так и не понял как с ней работать.
Результатом for select будет n кол into:StrParam равное количеству записей в таблице t, а как же в конструкции DO это все соединить в единственную строку с замещенными значениями??
...
Рейтинг: 0 / 0
Select Replace
    #39613208
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate, тут программист нужен...
Опиши параметр StrParam в результирующем наборе строк EXECUTE BLOCK'а, замени BEGIN...END в FOR на SUSPEND, подумай как инициализировать начальное значение StrParam и получишь тоже самое, что делает твой запрос на MySQL. В чем проблема?
FirebirdSQL Reference Manuals
...
Рейтинг: 0 / 0
Select Replace
    #39613214
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE FUNCTION REPLACE_BY_TABLE(StrParam VARCHAR(4000)) RETURNS VARCHAR(4000)
AS
BEGIN
  FOR 
      SELECT t.ЧтоЗаменить, t.Замена
      FROM T
  AS CURSOR C DO 
  BEGIN
    StrParam=REPLACE(StrParam, C.ЧтоЗаменить, C.Замена);
  END
  RETURN StrParam; 
END
...
Рейтинг: 0 / 0
Select Replace
    #39613223
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, а если у него v2.5? :)
...
Рейтинг: 0 / 0
Select Replace
    #39613229
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

переделает на процедуру, и вместо ссылки на курсор переменные задействует.

З.Ы. t-sql это MS SQL, а не MySQL
...
Рейтинг: 0 / 0
Select Replace
    #39613230
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, я и забыл, что он писал про Transact-SQL...
...
Рейтинг: 0 / 0
Select Replace
    #39613505
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, у меня FB3
хоть в функции хоть в скрипте
Код: sql
1.
2.
3.
4.
5.
6.
7.
FOR 
      SELECT t.ЧтоЗаменить, t.Замена
      FROM T
AS CURSOR C DO 
BEGIN
    StrParam=REPLACE(StrParam, C.ЧтоЗаменить, C.Замена);
END


ругается на тело begin/end
...
Рейтинг: 0 / 0
Select Replace
    #39613510
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateа как тогда вот это перевести на firebird

А что это странное выражение вообще делает? Просто выкинь "@StrParam=" и задача сводится к
предыдущей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Select Replace
    #39613511
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate,

да неужели? Текст ошибки предлагаешь телепатически угадать?
У тебя правда поля вот так называются "ЧтоЗаменить", "Замена"?
...
Рейтинг: 0 / 0
Select Replace
    #39613517
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть простая есть строка "'Заменить1 , Заменить2 , Заменить3'" надо заменить эти значения подстановкой из таблицы
в t-sql делается одной строкой
Код: sql
1.
2.
SELECT @StrParam=REPLACE(@StrParam,t.ЧтоЗаменить,t.Замена)
FROM t


В итоге должно получится StrParam="Заменили1 , Заменили2 , Заменили3"
Замучался я уже, почему не работает такая конструкция. Какие танцы с бубном еще надо станцевать?
Код: sql
1.
2.
3.
SELECT REPLACE(:StrParam,t.ЧтоЗаменить,t.Замена)
FROM t
INTO :StrParam
...
Рейтинг: 0 / 0
Select Replace
    #39613521
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поля написал как пример, на англицком называются, ошибка тут
Код: sql
1.
2.
3.
BEGIN
    StrParam=REPLACE(StrParam, C.ЧтоЗаменить, C.Замена);
END
...
Рейтинг: 0 / 0
Select Replace
    #39613523
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateпочему не работает такая конструкция. Какие танцы с бубном еще надо станцевать?

Прочитать Language Reference. Потом убрать INTO.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Select Replace
    #39613527
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

лично мне не понятно что вернёт в t-sql сия конструкция если в t будет больше одной записи
...
Рейтинг: 0 / 0
Select Replace
    #39613534
СферическийКуб
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисDimitry Sibiryakov,

лично мне не понятно что вернёт в t-sql сия конструкция если в t будет больше одной записи
В t-sql нет ошибки multiple rows in singleton select. Проходится вся таблица и берется последнее выбранное значение.
...
Рейтинг: 0 / 0
Select Replace
    #39613541
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, в t-sql сия конструкция возвращает StrParam с замещенными значениями количество replacов равно количеству строк в выборки данной таблице
...
Рейтинг: 0 / 0
Select Replace
    #39613544
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate,

у тебя вход и выход одна и так же переменная. Подставляется ли изменённое значение после первой записи на вход функции для второй записи? Если нет то достаточно

Код: sql
1.
2.
SELECT REPLACE(CAST(:StrParam AS VARCHAR(4000)),t.ЧтоЗаменить,t.Замена) AS StrParam 
FROM t
...
Рейтинг: 0 / 0
Select Replace
    #39613547
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate,

точный текст ошибки где ?
...
Рейтинг: 0 / 0
Select Replace
    #39613548
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate, на вопросы отвечать будем?
Симонов ДенисRedGate,

да неужели? Текст ошибки предлагаешь телепатически угадать?
У тебя правда поля вот так называются "ЧтоЗаменить", "Замена"?
...
Рейтинг: 0 / 0
Select Replace
    #39613555
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateЗамучался я уже, почему не работает такая конструкция. Какие танцы с бубном еще надо станцевать?Не надо никаких танцев с бубнами! Надо, всего лишь, прочесть Firebird 3.0 Language Reference от корки до корки или позвать программиста, который умеет читать.
...
Рейтинг: 0 / 0
Select Replace
    #39613598
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы чего умничаете?
Я говорю что такая конструкция в t-sql, в одну строчку без созданий функций и процедур
Код: sql
1.
2.
SELECT @StrParam=REPLACE(@StrParam,t.ЧтоЗаменить,t.Замена)
FROM t


выдает переменную StrParam с замененными значениями которые взяты из таблицы t.
Вопрос был, как такое сделать в Firebird? Конструкция вида:
Код: sql
1.
2.
3.
SELECT REPLACE(:StrParam, t.ЧтоЗаменить, t.Замена)
FROM t
INTO: StrParam


не работает.
И скажите мне страницу мануала где описана такая ситуация. Конструкция FOR SELECT требует для моей задачи еще 2 переменных в которые будут заносится значения после каждой итерации, что не приемлемо.
Если нельзя написать простую конструкцию так и скажите, чего пальцы то гнуть?
...
Рейтинг: 0 / 0
Select Replace
    #39613603
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate,

я же тебе одним запросом показал 21250134 , только значение надо извлекать не из переменной а из поля StrParam
Но если тебе не нужно решить свою задачу, можешь считать что это невозможно
...
Рейтинг: 0 / 0
25 сообщений из 78, страница 1 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Select Replace
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]