LINUX.ORG.RU

PostgreSQL помогите с запросом

 , , ,


0

1

Всем привет.

Хочу найти все id записей у кторых в VARCHAR-поле есть длинные слова. Для этого, как я полагаю, нужно посплитить строку по пробелам, пробежаться по получившемуся массиву и для каждого элемента проверить длину слова. Но понятия не имею как такой фокус провернуть на sql.

 id    | integer
 mystr | character varying(255) | not null
 ...

Может кто сталкивался с подобной задаче, подскажите, плиз.


Ответ на: комментарий от djnoob

Там вроде всё для этого есть. Судя по ТЗ тебе нужно найти максимальное слово (то есть не summ, а max) и по его длине отсортировать. Всё.

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Немного не так. Мне нужно как-то применить length к какждому элементу массива. Вот как такое сделать?

djnoob
() автор топика
Ответ на: комментарий от djnoob
SELECT
  id,
  length(word)                        -- Applying length to each word in array
FROM (SELECT
        id,
        unnest(
            string_to_array(text, ' ') -- Splitting text to array by space del
        )                              -- Converting array to rows  
          AS word
      FROM sample_table) AS tbl

Легко. Но дело в том, что хотелось бы услышать полностью задачу, ибо скорее всего, все должно быть немного по-другому.

nikolnik ★★★
()

Как насчёт regexp? Если тебе их сортировать не нужно конечно..

kardapoltsev ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.