Size: a a a

2021 March 16

M

Marat in dbGeeks
Mαrατ ßαg∂αຮαrץαή
Для цифровых значений кавычки не нужны.. Как я уже выяснил методом тыка, оно работает, но шиворот-навыворот, IN работает как NOT IN и наоборот... То есть пришлось написать NOT IN чтобы получить нужный результат... почему так не пойму, но пока оставил как работает правильно...
У тебя строка, а не цифры
источник

M

Marat in dbGeeks
Схему таблицы дай
источник

Mαrατ ßαg∂αຮαrץαή... in dbGeeks
Marat
У тебя строка, а не цифры
то есть запрос вида IN (название поля) в результате оборачивает содержимое поля в кавычки и в итоге получается не то?
источник

M

Marat in dbGeeks
Mαrατ ßαg∂αຮαrץαή
то есть запрос вида IN (название поля) в результате оборачивает содержимое поля в кавычки и в итоге получается не то?
Как-то так. Тебе нужно разбить эту строку и только потом делать IN. Но лучше через дополнительную таблицу
источник

M

Marat in dbGeeks
Или хранить в этом поле список, а не строку
источник

Mαrατ ßαg∂αຮαrץαή... in dbGeeks
Marat
Как-то так. Тебе нужно разбить эту строку и только потом делать IN. Но лучше через дополнительную таблицу
Понятно. Будем думать. Спасибо.
источник

Mαrατ ßαg∂αຮαrץαή... in dbGeeks
Marat
Или хранить в этом поле список, а не строку
то есть типа вот так 723','524','878 - и тогда оно при подстановке обернет в кавычки и получится список?
источник

M

Marat in dbGeeks
Mαrατ ßαg∂αຮαrץαή
то есть типа вот так 723','524','878 - и тогда оно при подстановке обернет в кавычки и получится список?
Нет. Если у тебя поле varchar/char/text - то оно всегда будет строкой
источник

M

Marat in dbGeeks
Нужно поле, которое содержит списки. В postgresql это array
источник

Mαrατ ßαg∂αຮαrץαή... in dbGeeks
просто если б оно там прописывалось логикой, то я бы конечно сделал по другому, а так оно ручками там прописывается, то видимо только так без открывающей и закрывающей кавычки чтоб получить в итоге список..
источник

Mαrατ ßαg∂αຮαrץαή... in dbGeeks
Marat
Нужно поле, которое содержит списки. В postgresql это array
тут речь про sqlite )) ок я понял решение..
источник

M

Marat in dbGeeks
Mαrατ ßαg∂αຮαrץαή
тут речь про sqlite )) ок я понял решение..
Тогда отдельную таблицу, не уверен, что в sqlite есть нужный функционал. Сейчас погуглю. И  если руками заполняют, то могут лишние символы написать
источник

M

Marat in dbGeeks
Лёгких вариантов нет. Вот примерное решение для разбиения строки: https://stackoverflow.com/a/32051164
источник

Mαrατ ßαg∂αຮαrץαή... in dbGeeks
Та я по ходу легких путей и не ищу )) Спасибо, есть над чем подумать..
источник

VK

Vladimir Karamazov in dbGeeks

SELECT categories FROM myTable WHERE (","||categories||",") LIKE "%,7,%";

Вроде должно находить. Однако это неэффективный поиск, присоединяюсь к совету пересмотреть дизайн таблиц(ы)
источник

VK

Vladimir Karamazov in dbGeeks
Не хранить в одной колонке несколько значений - одно из основных правил нормализации, которым не стоит пренебрегать
источник

EK

Evgeniy Kuvshinov in dbGeeks
а как же jsonb :) <- сарказм)
источник

EK

Evgeniy Kuvshinov in dbGeeks
нарушение 1НФ это прикольно)
источник

VK

Vladimir Karamazov in dbGeeks
Хех ;) сарказм сарказмом, но иногда приходится увлекаться
источник

v

voenkom in dbGeeks
Всем привет, изучаю на степике sql, и случайно набрёл на такое странное как по мне поведение.
В having  сравниваю на максимум агрегатную функцию вроде бы максимум 31, но когда  напрямую прописать знак равенства его не селектит, когда же прописать то же через вложенный запрос всё ок или если прописать >=. Поясните, если я ещё не вообще безнадёжен, где я заблуждаюсь. Большое спасибо.
Знаю что лучше прописать в where с вложенным запросом, но интересно почему здесь такое поведение. Сори, если у вас не принято такие вещи спрашивать 😅😅😅
источник