Size: a a a

pgsql – PostgreSQL

2021 February 16

YS

Yaroslav Schekin in pgsql – PostgreSQL
Kino Recovery
Добрый, у меня вопрос можно ли в запросе where использовать элементы массива? допустим a=[1,2,3,4[ select * from test where id=a

select * from test where id=1 or id=2 or id=3 or id=4
id = ANY(<массив>)
источник

Б

Богдан in pgsql – PostgreSQL
Господа, а подскажите как лучше всего сделать. Есть url и таблица редиректов с старыми и новыми slug. И нужно в url сделать замену всех старых slug на новые. Сделал через рекурсию, но может можно как-то более оптимально написать ?
drop table if exists redirect;
create table redirect (old varchar(100), current varchar(100));

insert into redirect (old, current) values
('category1-0', 'c1-0'), ('category1-1', 'c1-1'), ('product-1', 'p-1');


WITH RECURSIVE r AS (
 select '/category1-0/category1-1/product-1/' as link, 0 as i
 
 UNION
   
 select
   replace(r.link, redirect.old, redirect.current) as link,
   i + 1 as i
 from redirect, r  where link like '%'||old||'%'
)
SELECT * FROM r order by i desc limit 1;
источник

Z

Zheka_13 in pgsql – PostgreSQL
replace() ?
источник

Б

Богдан in pgsql – PostgreSQL
Zheka_13
replace() ?
ну тут же не подойдет replace потому что url состоит из нескольких slug
источник

Z

Zheka_13 in pgsql – PostgreSQL
как вариант, разбить по слешам, зареплейсить и собрать снова
источник

Б

Богдан in pgsql – PostgreSQL
Zheka_13
как вариант, разбить по слешам, зареплейсить и собрать снова
спасибо
источник

Z

Zheka_13 in pgsql – PostgreSQL
но не знаю будет ли лучше это вашего запроса. просто как вариант
источник

K

Kino Recovery in pgsql – PostgreSQL
Yaroslav Schekin
id = ANY(<массив>)
ERROR:  operator does not exist: integer = integer[]
источник

K

Kino Recovery in pgsql – PostgreSQL
сейчас покажу запрос
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Kino Recovery
ERROR:  operator does not exist: integer = integer[]
Вы ANY не написали, наверное.
источник

Z

Zheka_13 in pgsql – PostgreSQL
в any вроде как массив нельзя вставлять
источник

K

Kino Recovery in pgsql – PostgreSQL
я только учусь и это маленький петпроект,так что чем сильнее будите пинать тем лучше
источник

АТ

Александр Тарасов... in pgsql – PostgreSQL
В чем различие in и = any, в каких ситуациях что будет эффективнее?
источник

Z

Zheka_13 in pgsql – PostgreSQL
это тоже самое
источник

K

Kino Recovery in pgsql – PostgreSQL
# select id,fname, playlist_id, row_number() over (order by video_playlist.playlist_id DESC)  from video_data as vd  join   video_playlist   on video_playlist.item=vd.id  where video_playlist.playlist_id any((select playlists from devices where ip='192.168.141.141')) or video_playlist.playlist_id=255;
источник

Z

Zheka_13 in pgsql – PostgreSQL
select id,fname, playlist_id, row_number() over
(order by video_playlist.playlist_id DESC)  
from video_data as vd  join   video_playlist   on video_playlist.item=vd.id
where video_playlist.playlist_id =  any(select playlists from devices where ip='192.168.141.141') or video_playlist.playlist_id=255;
источник

Z

Zheka_13 in pgsql – PostgreSQL
упс. а как код вставлять ?
источник

K

Kino Recovery in pgsql – PostgreSQL
               Table "public.devices"
 Column   |   Type    | Collation | Nullable | Default
-----------+-----------+-----------+----------+---------
ip        | inet      |           | not null |
playlists | integer[] |           |          |
Indexes:
   "devices_pkey" PRIMARY KEY, btree (ip)
источник

K

Kino Recovery in pgsql – PostgreSQL
Zheka_13
упс. а как код вставлять ?
yfнадо обернуть в
 
```
источник

Z

Zheka_13 in pgsql – PostgreSQL
аа у вас playlists массив . поэтому не получается
источник