bij*_*uji 12 mysql sql select sqldatatypes
我有一个MySQL表,其中有一个product_id字段(大整数)
110233000811023300251102330070110301000911030100101103020006...
我想选择有的行product_id = 110301****.我试图使用这个查询:
SELECT * FROM `product` WHERE (product_id/10000)=110301
Run Code Online (Sandbox Code Playgroud)
但它不会返回任何带有此消息的值:
MySQL returned an empty result set (i.e. zero rows). ( Query took 0.0005 sec )
dje*_*lin 25
使用DIV运营商.
mysql> SELECT 5 DIV 2;
-> 2
Run Code Online (Sandbox Code Playgroud)
整数除法.与FLOOR()类似,但BIGINT值是安全的.对于超出BIGINT范围的非整数操作数,可能会出现不正确的结果.
SELECT *
FROM product
WHERE product_id BETWEEN 1103010000
AND 1103019999
Run Code Online (Sandbox Code Playgroud)
如果你想用PHP创建你的查询,那么你可以构建你的查询
$sql = "
SELECT *
FROM product
WHERE product_id BETWEEN {$product_id_range}0000
AND {$product_id_range}9999
";
Run Code Online (Sandbox Code Playgroud)
MySQL 文档说它LIKE也使用索引,所以我认为你也可以使用:
SELECT *
FROM `product`
WHERE product_id LIKE '110301____' -- four undersores as biziclop suggested
Run Code Online (Sandbox Code Playgroud)
编辑:要修复您自己的查询,您需要使用FLOOR()(文档),因为它的结果如下:
1103010006 / 10000
Run Code Online (Sandbox Code Playgroud)
结果为 110301,0006 并且不等于110301