Как проверить наличие цифры или символа в столбце таблицы SQL? - PullRequest
0 голосов
/ 05 июня 2019

Мне кажется, что на этот вопрос нужно было где-то ответить, но я прочитал тонны постов и перепробовал множество вариантов решений, и я не могу заставить это работать.

У меня есть таблица базы данных с именем schedule, и я просто хочу выбрать строки, содержащие определенную цифру, из столбца days, используя python.Столбец days содержит некоторую комбинацию чисел от 1 до 7, каждое из которых представляет день недели.Это может быть один день или комбинация дней («1», «135», «1234567» и т. Д.).

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

Я сделал тип столбца VARCHAR, потому что я понялбыло бы проще проверить строку, чем целочисленное значение.

Это мой текущий оператор, где день - это индекс (например, 3) выбранного дня:

"SELECT * FROM schedule WHERE CONTAINS(days, '{}')".format(day)

Я постояннополучить эту ошибку:

You have an error in your SQL syntax; check the manual that corresponds to 
your MySQL server version for the right syntax to use near '(days, '3')'

Что я могу исправить, чтобы заставить эту работу?

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Итак, если вы возьмете свою строку дней и разделите их, чтобы получить список, а затем вы можете использовать оператор IN для выбора любого из значений.

Итак, допустим, у вас есть:

days = '1234567'

Преобразуйте это в список.

days = days.split('')  # Split on an empty string to split each character.

Тогда ваш SQL будет выглядеть следующим образом:

"SELECT * FROM schedule WHERE days in ({})".format(days)

Выбор будет искать любые значения в данном массиве.Формат просто вставка массива python.Также это будет работать, даже если исходное значение дней составляет только один день.т.е. дни = '1'

0 голосов
/ 06 июня 2019

Используете ли вы MySQL?

В MySQL нет оператора «CONTAINS», используйте оператор «LIKE».

"SELECT * FROM schedule WHERE days LIKE '%{}%'".format(day)

% - это подстановочный знак, который может быть любымсимволы.

...