如何检查SQL表列中的数字或字符?

时间:2019-06-05 20:57:04

标签: python mysql mysql-workbench

我觉得这个问题必须在某个地方回答,但是我读了无数帖子,并尝试了多种解决方案,但我无法解决这个问题。

我有一个名为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')'

要解决此问题,我该如何解决?

2 个答案:

答案 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'