Есть ли функция замены в жидкости? - PullRequest
1 голос
/ 31 октября 2019

Liquibase предлагает функцию обновления, которая обновляет все значение в столбце. Есть ли способ просто заменить часть стоимости? Или я должен использовать простые SQL-операторы для него?

Значение в столбце выглядит следующим образом:

downtime = maintenanceTime + rampUpTime + repairTime;

при вызове

<changeSet author="faf" id="29.10.19-16:34-001">
        <update tableName="PARAMETER">
            <column name="VALUE" type="varchar(64)" value="setupTime" />
            <where>VALUE LIKE '%rampUpTime%'</where>
        </update>
    </changeSet>

оно переводит егона

UPDATE parameter set VALUE = 'setupTime'  where VALUE like '%rampUpTime%'

Я ищу что-то похожее, что будет переведено на

UPDATE parameter
SET VALUE = REPLACE(VALUE, 'rampUpTime', 'setupTime')
WHERE VALUE LIKE '%rampUpTime%';

1 Ответ

2 голосов
/ 31 октября 2019

Liquibase не предлагает REPLACE, но предлагает атрибут valueComputed для тега <update>.

Я думаю, что следующее должно помочь:

<changeSet author="faf" id="29.10.19-16:34-001">
    <update tableName="PARAMETER">
        <column name="VALUE" type="varchar(64)" valueComputed="REPLACE(VALUE, 'rampUpTime', 'setupTime')" />
        <where>VALUE LIKE '%rampUpTime%'</where>
    </update>
</changeSet>
...