如何检查变量是否等于数据库中表中某列的一部分?

时间:2017-10-31 18:43:54

标签: mysql sql

例如,我有一个变量$num = 123;,另一个叫`$ name = joe;' ,并且有一个数据库包含一个名为“data”的表,在此表中有两列(num [type = varchar(255)] - name [type = varchar(255)])。

例如,这些查询存在于DB中:
num = 123456,name = joe

如何检查第一个“3”数字是否等于$ num变量且名称等于变量$ name?

我尝试了这个,但它不起作用:
SELECT * FROM data Where SUBSTRING(num , 0 , 3) = '123' AND name = 'joe'

2 个答案:

答案 0 :(得分:1)

在MySQL中,子字符串索引从1开始:

WHERE SUBSTRING(num , 1 , 3) = '123' AND name = 'joe'

但更常用的是LEFT()LIKE

WHERE LEFT(num , 3) = '123' AND name = 'joe'
WHERE num = '123%' AND name = 'joe'

LIKE的优点是它可以使用索引。 。 。甚至是(name, num)上的一个。

答案 1 :(得分:0)

MySQL substring()函数是基于1的,而不是基于0的,所以这应该对你有用:

SELECT * FROM data Where SUBSTRING(num , 1 , 3) = '123' AND name = 'joe'