我觉得这个问题必须在某个地方回答,但是我读了无数帖子,并尝试了多种解决方案,但我无法解决这个问题。
我有一个名为schedule
的数据库表,我只想使用python从days
列中选择包含特定数字的行。天列包含1到7的数字组合,每个数字代表一周中的某一天。可以是一天,也可以是几天的组合(“ 1”,“ 135”,“ 1234567”等)。
给定一个特定的日期索引(例如3),我想从时间表中选择在天列中具有3的所有行。
我将列类型设置为VARCHAR,因为我认为检查字符串要比整数值更容易。
这是我当前的语句,其中day是所选日期的索引(例如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')'
要解决此问题,我该如何解决?
答案 0 :(得分:0)
您使用MySQL吗?
MySQL没有'CONTAINS'运算符,请使用'LIKE'运算符。
"SELECT * FROM schedule WHERE days LIKE '%{}%'".format(day)
%
是通配符,可以是任何字符。
答案 1 :(得分:0)
因此,如果您将几天的字符串分成两部分,以便得到一个列表,然后可以使用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'