我有一个php变量。我想检查它是否位于mysql表的任何行的两列的值之间。但我不希望将该变量与表的精确值匹配。即,独家BETWEEN条款。如果有人知道答案,那么请举例说明。谢谢。这是我的代码。
$var = '15:00:00';
//Mysql Table (datatype of columns are TIME)
first last
row1 13:00:00 15:00:00
row2 17:00:00 19:00:00
答案 0 :(得分:2)
MySQL中没有“独家BETWEEN”运算符。
表达式:
a BETWEEN b AND c
实际上只是简写,相当于:
( a >= b AND a <= c )
如果这不是您想要的条件,您可以使用不同的比较运算符:
( a > b AND a < c )
如果您希望(需要?)获得与之相当的结果,但使用BETWEEN运算符,您可以使用某些条件的奇怪组合:
( a BETWEEN b AND c AND a NOT IN (b,c) )
就个人而言,如果您避免使用BETWEEN
,我认为SQL更容易理解。
有几个查询可以检查给定值是否“匹配”表中的一行或多行。例如:
SELECT 1 AS `matched`
FROM mytable t
WHERE t.first < ?
AND t.last > ?
LIMIT 1
如果匹配的行,此查询将返回一行,如果没有匹配的行,则返回空集。
答案 1 :(得分:1)
您可以使用between
子句
SELECT `column1`,`column1`,`column1`
FROM table_name
WHERE $var > `first` AND $var < `second`
这样的东西只有在价值介于第一和第二的中间时才会起作用
答案 2 :(得分:0)
实际上,您可以在查询中使用表达式。
public class Jar
{
private int position;
private Stone stone;
/**
* Constructor for objects of class Jar
*/
public Jar()
{
position = 0;
stone = null;
}
public Jar(int initPos, Stone stone)
{
position = initPos;
this.stone = stone;
}
public void move(int distance)
{
position = position + distance;
}
public void moveTo(Jar jar)
{
jar.stone = stone;
stone = null;
}
}
public class Chest
{
private int combination;
private int position;
private Jar jar1;
private Jar jar2;
private Jar jar3;
public Chest()
{
System.out.print("Enter chest combination (5-10): ");
combination = Global.keyboard.nextInt();
position = 4;
jar1 = new Jar();
jar2 = new Jar();
jar3 = new Jar();
}
}
您可以选择所需的任何间隔。这甚至适用于准备好的语句。