powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Select Replace
78 сообщений из 78, показаны все 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
Select Replace
    #39613613
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate,

Вот так попробуй:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
execute block
returns (teststring varchar(100))
as
begin
  teststring = '700 600 500 400 300 200 100' ;

  for select replace(:teststring, '400', a.s_name)
      from sprav a
      where a.priz_spr=7 and a.s_name containing '841'
  into :teststring
  do
  begin
  end
  suspend ;
end
...
Рейтинг: 0 / 0
Select Replace
    #39613614
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateИ скажите мне страницу мануала где описана такая ситуация. Стр. 319-323
RedGateКонструкция FOR SELECT требует для моей задачи еще 2 переменных в которые будут заносится значения после каждой итерации, что не приемлемо.Неприемлемо что?
Если нельзя написать простую конструкцию так и скажите, чего пальцы то гнуть?
...
Рейтинг: 0 / 0
Select Replace
    #39613617
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI, а чо, может всё сами за него сделаем? Чего мелочиться?
...
Рейтинг: 0 / 0
Select Replace
    #39613618
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

уже, разве что вызывающий код не написали
...
Рейтинг: 0 / 0
Select Replace
    #39613619
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, у тебя на выходе будет не одно значение, а несколько и в каждой будет произведена одна замена, в моей же задаче на выходе должна быть та же переменная, что и на входе но уже с замененными значениями. Типа циклической замены с количеством замен равное количеству строк в выборке из t
...
Рейтинг: 0 / 0
Select Replace
    #39613622
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate,

А ведь я именно это и уточнял.
Тогда пиши execute block или PSQL функцию или хранимую процедуру. Даже показали как это сделать.

З.Ы. Вообще забавная конструкция t-sql которая обычную функцию с какого перепуга в агрегатную превращает
...
Рейтинг: 0 / 0
Select Replace
    #39613623
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.03.2018 16:46, Симонов Денис пишет:
> З.Ы. Вообще забавная конструкция t-sql которая обычную функцию с какого перепуга в агрегатную превращает

не.
просто поциент не владеет тем предметом так же как и этим.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Select Replace
    #39613624
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devKreatorXXI, а чо, может всё сами за него сделаем? Чего мелочиться?
Я что тебя попросил скрипт на 5 листов переписать или ты уже устал от того что прочитал мое сообщение? Ну не напрягайся тогда.
...
Рейтинг: 0 / 0
Select Replace
    #39613625
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжайте "типа" ставить задачу.
Тут T-SQL никто не знает. Исходим из этого предположения.
Будет контрольный пример со структурой таблицы и несколькими записями в ней?
...
Рейтинг: 0 / 0
Select Replace
    #39613629
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateВы чего умничаете?
Я говорю что такая конструкция в t-sql, в одну строчку без созданий функций и процедур
Код: sql
1.
2.
SELECT @StrParam=REPLACE(@StrParam,t.ЧтоЗаменить,t.Замена)
FROM t


...

У тебя здесь вопрос, но чтобы ответить на него, нужно изучить t-sql? Ты смешной.
...
Рейтинг: 0 / 0
Select Replace
    #39613633
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да чё Вы такие злые? Много отдохнули что-ли?
RedGate, бери мой пример, работает правильно. Либо в хранимку оформи. Короче, видимо не получится.
...
Рейтинг: 0 / 0
Select Replace
    #39613637
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXI,
Ща подробно распишу задачу
...
Рейтинг: 0 / 0
Select Replace
    #39613647
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
o_v_a,
не знаю как в форуме таблицу вставить, пусть будет xml таблица
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<table>
    <caption>t</caption>
    <thead>
        <tr><td>ЧтоЗаменить</td><td>Замена</td></tr>
    </thead>
    <tbody>
        <tr><td>Заменить1</td><td>Заменили1</td></tr>
        <tr><td>Заменить2</td><td>Заменили2</td></tr>
        <tr><td>Заменить3</td><td>Заменили3</td></tr>
    </tbody>
</table>


Входящая строка StrParam='Заменить1 , Заменить2 , Заменить3' используя таблицу t надо получить
StrParam= 'Заменили1 , Заменили2 , Заменили3'
...
Рейтинг: 0 / 0
Select Replace
    #39613667
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateo_v_a,
не знаю как в форуме таблицу вставить, пусть будет xml таблица
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<table>
    <caption>t</caption>
    <thead>
        <tr><td>ЧтоЗаменить</td><td>Замена</td></tr>
    </thead>
    <tbody>
        <tr><td>Заменить1</td><td>Заменили1</td></tr>
        <tr><td>Заменить2</td><td>Заменили2</td></tr>
        <tr><td>Заменить3</td><td>Заменили3</td></tr>
    </tbody>
</table>


Входящая строка StrParam='Заменить1 , Заменить2 , Заменить3' используя таблицу t надо получить
StrParam= 'Заменили1 , Заменили2 , Заменили3'
Смотри.
1. Парсим входную строку в рекордсет: 6686267
2. Соединяем его слева (left) с твоей табличкой подстановок.
3. Из результата собираем строку с помощью List(): https://firebirdsql.org/refdocs/langrefupd21-aggrfunc-list.html (плюс анализ результата соединение на NULL).
...
Рейтинг: 0 / 0
Select Replace
    #39613669
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД,

извращенец
...
Рейтинг: 0 / 0
Select Replace
    #39613671
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateЕсли нельзя написать простую конструкцию так и скажите, чего пальцы то гнуть?

Ок, говорю: нельзя написать в одну строчку, обломись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Select Replace
    #39613674
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чччД,
Что то мне не верится что в FB3 нет простого решения, разве никто так замену в строке не делает?
...
Рейтинг: 0 / 0
Select Replace
    #39613675
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

нет я буду под каждый чих изгаляться, когда готовые отлаженные блоки есть.
...
Рейтинг: 0 / 0
Select Replace
    #39613676
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateчччД,
Что то мне не верится что в FB3 нет простого решения, разве никто так замену в строке не делает?
Ну поищи, потом не забудь рассказать.
...
Рейтинг: 0 / 0
Select Replace
    #39613677
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateразве никто так замену в строке не делает?

Да, вменяемые люди не грузят СУБД левой работой, у них для неё и своей хватает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Select Replace
    #39613678
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, Вас понял.
Значит переход на FB отменяется.
...
Рейтинг: 0 / 0
Select Replace
    #39613681
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate,

я тебе 8 раз говорю. Напиши PSQL функцию и вызывай её в своём запросе. Неужели это так сложно?
...
Рейтинг: 0 / 0
Select Replace
    #39613682
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateЗначит переход на FB отменяется.

Ура!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Select Replace
    #39613686
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.03.2018 17:42, RedGate пишет:
> Значит переход на FB отменяется.

слава Всевышнему!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Select Replace
    #39613689
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не понятно чему вы радуетесь! явный косяк FB в конструкции select into.
...
Рейтинг: 0 / 0
Select Replace
    #39613693
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate,

неужели? А по моему кто-то просто не хочет учить СУБД на которую собирается мигрировать.
...
Рейтинг: 0 / 0
Select Replace
    #39613694
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну почему косяк?
Вот так работает же:
Код: sql
1.
2.
3.
4.
5.
6.
for select replace(:teststring, t.ЧтоЗаменить, t.Замена)
      from t
  into :teststring
  do
  begin
  end


Что не устраивает? Лишние "do-begin-end"?
...
Рейтинг: 0 / 0
Select Replace
    #39613696
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXI,
ща посмотрю
...
Рейтинг: 0 / 0
Select Replace
    #39613699
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateDimitry Sibiryakov, Вас понял.
Значит переход на FB отменяется.
Уж не знаю, что тебе надо. Оформи в виде процедуры, вот и будет тебе "в одну строчку".
А в FB 3.* вообще функции появились, куда уж проще. Сделай один раз да пользуйся везде.
...
Рейтинг: 0 / 0
Select Replace
    #39613701
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate,

В транзакте всё также. Надо declare писать. Просто select без declare не пройдёт. Надо оборачивать в хранимку. В FB для тех кто не любит хранимки есть Execute block.
...
Рейтинг: 0 / 0
Select Replace
    #39613702
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RedGate,
IBExpert 2018
Код: sql
1.
2.
3.
4.
5.
6.
for select replace(:teststring, t.ЧтоЗаменить, t.Замена)
      from t
  into :teststring
  do
  begin
  end


SQL error code = -104.
Token unknown - line 10, column 5.
do.
...
Рейтинг: 0 / 0
Select Replace
    #39613704
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в Execute block делал
...
Рейтинг: 0 / 0
Select Replace
    #39613705
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
recreate table t (a varchar(30), b varchar(30));

insert into t(a,  b) values('Заменить1', 'Заменили1');
insert into t(a,  b) values('Заменить2', 'Заменили2');
insert into t(a,  b) values('Заменить3', 'Заменили3');

commit;

set term ^;

create function replace_by_table(StrParam varchar(4000)) returns varchar(4000)
as
begin
  for select a, b
      from t
      as cursor c
  do
  begin
    StrParam = replace(StrParam, c.a, c.b);
  end
  return StrParam;
end^

set term ;^



вызываем так

Код: sql
1.
2.
select replace_by_table('Заменить1 , Заменить2 , Заменить3') as StrParam
from rdb$database



ты не поверишь, работает!!!
...
Рейтинг: 0 / 0
Select Replace
    #39613707
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,
да эта конструкция работает. Огромное спасибо, буду думать дальше
...
Рейтинг: 0 / 0
Select Replace
    #39613722
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXI,
Код: sql
1.
2.
3.
4.
5.
6.
for select replace(:teststring, t.ЧтоЗаменить, t.Замена)
      from t
  into :teststring
  do
  begin
  end


Твоя конструкция тоже работает!
Ура, может еще поборемся за FB
...
Рейтинг: 0 / 0
Select Replace
    #39613724
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем, не смею более тратить ваше время.
...
Рейтинг: 0 / 0
Select Replace
    #39613725
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateможет еще поборемся за FB

Нет уж, нет уж, померла так померла. Возвращайся на MS SQL.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Select Replace
    #39613726
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate Ура, может еще поборемся за FB

А может не надо, а? Тебе же всю доку придётся вслух читать и руками твоими водить. И не только за FB.
...
Рейтинг: 0 / 0
Select Replace
    #39613730
RedGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну нет уж FB для народа, а не для избранных!
...
Рейтинг: 0 / 0
Select Replace
    #39613736
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateУра, может еще поборемся за FB
Поверь, главная засада тебя ждёт вовсе не в разнице синтаксисов. "Бороться" за что-то можно, когда знаешь предмет.
...
Рейтинг: 0 / 0
Select Replace
    #39613827
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGateKreatorXXI,
Код: sql
1.
2.
3.
4.
5.
6.
for select replace(:teststring, t.ЧтоЗаменить, t.Замена)
      from t
  into :teststring
  do
  begin
  end


Твоя конструкция тоже работает!
Ура, может еще поборемся за FB
Мне тоже сначала после транзакт было не очень. Но ничего, втянулся. Теперь правильные советы иногда даю.
...
Рейтинг: 0 / 0
Select Replace
    #39613885
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedGate,

Код: sql
1.
select list( replace('StringForReplace', FieldWhere, ',') from TableWhere
...
Рейтинг: 0 / 0
Select Replace
    #39613959
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorRedGate,

Код: sql
1.
select list( replace('StringForReplace', FieldWhere, ',') from TableWhere


Совсем не туда. list-то зачем?
...
Рейтинг: 0 / 0
Select Replace
    #39614000
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чо, for select без пустого begin-end после do не работает штоле?
Просто интересно.
...
Рейтинг: 0 / 0
Select Replace
    #39614005
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIpastorRedGate,

Код: sql
1.
select list( replace('StringForReplace', FieldWhere, ',') from TableWhere


Совсем не туда. list-то зачем?


Потому что я удосужился прочитать вопрос?

RedGateo_v_a,
не знаю как в форуме таблицу вставить, пусть будет xml таблица
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<table>
    <caption>t</caption>
    <thead>
        <tr><td>ЧтоЗаменить</td><td>Замена</td></tr>
    </thead>
    <tbody>
        <tr><td>Заменить1</td><td>Заменили1</td></tr>
        <tr><td>Заменить2</td><td>Заменили2</td></tr>
        <tr><td>Заменить3</td><td>Заменили3</td></tr>
    </tbody>
</table>


Входящая строка StrParam='Заменить1 , Заменить2 , Заменить3' используя таблицу t надо получить
StrParam= 'Заменили1 , Заменили2 , Заменили3'
...
Рейтинг: 0 / 0
Select Replace
    #39614009
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIpastorRedGate,

Код: sql
1.
select list( replace('StringForReplace', FieldWhere, ',') from TableWhere


Совсем не туда. list-то зачем?

Хотя...
У него там входящий параметр многострочный.

А по факту - хочет агрегат - получит агрегат.
...
Рейтинг: 0 / 0
Select Replace
    #39614031
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryА чо, for select без пустого begin-end после do не работает штоле?
Просто интересно.
У меня - нет. ";" тоже не заменяет пустой beginend, что немного странновато, как по мне.
...
Рейтинг: 0 / 0
Select Replace
    #39614110
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По "Руководству по языку..." после do должен быть обязательный "<compound_statement>". Вот если бы ещё и do убрать, TC понравилось бы.
...
Рейтинг: 0 / 0
Select Replace
    #39614114
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13.03.2018 14:00, KreatorXXI пишет:
> По "Руководству по языку..." после do должен быть обязательный "<compound_statement>". Вот если бы ещё и do убрать, TC понравилось бы.

тогда и FOR убрать
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Select Replace
    #39614115
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий, предлагаю CTE, чтобы ТС окончательно сломал себе моск.
...
Рейтинг: 0 / 0
Select Replace
    #39614119
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,

лично для меня конструкция

Код: sql
1.
2.
3.
for select replace(:teststring, t.ЧтоЗаменить, t.Замена)
      from t
  into :teststring



сомнительная. Да сейчас изменённая teststring попадает на вход replace, но это может и измениться в будущем. Если хочешь без begin ... end то можно сделать так

Код: sql
1.
2.
3.
4.
5.
  for select t.ЧтоЗаменить, t.Замена
      from t
  as cursor c
  into :teststring
  do teststring = replace(teststring, c.ЧтоЗаменить, c.Замена);
...
Рейтинг: 0 / 0
Select Replace
    #39614120
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, блин ошибся into убрать надо

Код: sql
1.
2.
3.
4.
for select t.ЧтоЗаменить, t.Замена
      from t
  as cursor c
  do teststring = replace(teststring, c.ЧтоЗаменить, c.Замена);
...
Рейтинг: 0 / 0
Select Replace
    #39614146
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не забываем прострелить себе ногу в разных позах.
Код: sql
1.
2.
3.
rdb$set_context('USER_TRANSACTION', 'T', 'заменить1, заменить3, заменить2');
select rdb$set_context('USER_TRANSACTION', 'T', replace(rdb$get_context('USER_TRANSACTION', 'T'), t.ЧтоЗаменить, t.НаЧтоЗаменить)) from t;
select rdb$get_context('USER_TRANSACTION', 'T') from rdb$database;
...
Рейтинг: 0 / 0
78 сообщений из 78, показаны все 4 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Select Replace
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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