SQL Выберите, где значения в строке списка - PullRequest
0 голосов
/ 03 апреля 2020

Я выбираю данные с помощью этого запроса

SELECT * FROM `tbl_post` WHERE cate IN (15)

Но только записи могут быть найдены, что число 15 является первым как: "15,16,18", "15" не может быть найдено, если номер 15 в середине или последний как: "14,15,16"

enter image description here

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

MySQL имеет Speci c строковую функцию с именем find_in_set() для поиска значения в строке через запятую:

select * from tbl_post where find_in_set('15', cat) > 0

Хотя это будет работать для вашего конкретного c варианта использования, позвольте мне указать, что хранение списка с разделителями в реляционных базах данных не является хорошей практикой , и его, как правило, следует избегать. У вас должна быть отдельная таблица для хранения cate s, каждое значение которой находится в отдельной строке.

Рекомендуемое чтение: Действительно ли плохо хранить список с разделителями в столбце базы данных?

0 голосов
/ 03 апреля 2020

Простое использование «лайк» может помочь -

select * from tbl_post where cate like '15,%' or cate like '%,15,%' or cate 
like '%15';

кейт, как '15,% ': получит 15 в начале

кейт, как'%, 15,% ': 15 будут размещены в середине

кейт, как'% 15 ': 15 будут размещены в конце

...