2015-02-01 11 views
2

Как видно из названия, мне трудно, угадывая, как я могу эффективно обновлять значение в нескольких строках. Колонка реализована с типом данных ltree. Таким образом, должна быть какая-то форма специальных операций для этого типа данных в postgresql Вот пример:SQL: Как обновить значение внутри литра?

Имя таблицы, скажем: product_sections и имя столбца, содержащего эти значения является section_path (type: ltree)

Android 
Android.Browser 
Android.Browser.Test 
Android.Browser.Compare.URL 

Здесь я хочу обновить только Browser что-то вроде Foo части так, что эти данные станут так:

Android 
Android.Foo 
Android.Foo.Test 
Android.Foo.Compare.URL 

Спасибо заранее :)

ответ

1
update product_sections 
set product_path = 'Android.foo'::lpath|| subpath(product_sections,2)) 
where product_path <@ 'Android.browser'::lpath 

непроверено, но это должно привести к правильному результату.

+0

Я только что видел синтаксическую ошибку в последней строке. поэтому обязательно используйте последнюю версию, которую я только что исправил. –

0

Для динамических результатов, вы можете использовать Nlevel функцию в качестве параметра подпути (непроверенных):

update product_sections 
set product_path = 'Android.foo'::lpath|| subpath(product_sections,nlevel('Android.foo'))) 
where product_path <@ 'Android.browser'::lpath 

 Смежные вопросы

  • Нет связанных вопросов^_^