Php 从数据库中的文本文件获取数据的查询之间的MySQLi
我有一个问题:Php 从数据库中的文本文件获取数据的查询之间的MySQLi,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个问题: $sql = "SELECT * FROM table WHERE CONCAT(Prod, Serial) BETWEEN '$start' AND '$end'"; 其中Prod和Serial作为字符串存储在MySQLi数据库中。我需要更新AA1000和AA1005之间项目的详细信息。当我运行此查询时,它会更新AA1000和AA1005之间的单位的详细信息,“作为奖金”,所有单位都在AA10000和AA10050之间。 是否有一种方法可以使用BETWEEN查询获得文本类型
$sql = "SELECT * FROM table WHERE CONCAT(Prod, Serial) BETWEEN '$start' AND '$end'";
其中Prod和Serial作为字符串存储在MySQLi数据库中。我需要更新AA1000和AA1005之间项目的详细信息。当我运行此查询时,它会更新AA1000和AA1005之间的单位的详细信息,“作为奖金”,所有单位都在AA10000和AA10050之间。
是否有一种方法可以使用BETWEEN查询获得文本类型字段的精确匹配
谢谢
另外,我知道我需要更新查询来更新详细信息。我使用SELECT进行测试。您以一种非常糟糕的方式滥用了
BETWEEN
语法。你在比较字符串,所以
'AA1000' <= 'AA10000' <= 'AA1005'
'AA1000'我个人从未遇到过需要它的情况,但我相信你可以用正则表达式来实现这一点 此查询应执行以下操作:
SELECT *
FROM TABLE
WHERE Prod = LEFT('$start', 2)
AND CAST(Serial AS DECIMAL) BETWEEN SUBSTRING('$start', 3) AND SUBSTRING('$end', 3);
您还可以在PHP中拆分开始字符串和结束字符串:
$prod = substr($start, 0, 2);
$start_code = substr($start, 2);
$end_code = substr($end, 2);
$sql = "SELECT *
FROM TABLE
WHERE Prod = '$prod'
AND CAST(Serial AS DECIMAL) BETWEEN $start_code AND $end_code";
迄今为止,已开展了以下工作:
CONVERT(SUBSTRING('$startunit', 3),UNSIGNED INTEGER)
谢谢大家 $start
和$end
是否始终具有相同的字母前缀,或者它们可能是AA1000
和BB1005
?是不是$start
和$end
的产品部分始终只有两个字符?可以是不同的。。有很多,比如bb dd da ma su等,但它们只有两个,所以在AA1000和BB1005之间的情况下,您希望返回什么?虽然可以将范围表示为regexp,一般情况下会非常复杂。谢谢Barmar,但将$start设置为AA1500,将$end设置为AA1503将返回34而不是3个结果…什么数据类型是串行的?我假设它是INT
。到目前为止,下面的工作已经完成:CONVERT(子字符串('$startunit',3),无符号整数)
CONVERT(SUBSTRING('$startunit', 3),UNSIGNED INTEGER)