我有库存。例如,项目编号(以及 DB 中的值)是“C10364A”。该商品上有条形码。当我用条形码扫描仪扫描它时,代码值为
PC10364A
。
我想通过搜索进行选择输入。当我用条码扫描仪输入时,如何搜索并选择这个确切的项目?
第二个问题是关于自然排序的。
呈现价值观:
{ J1, J3, J18, J41, J12, L1, L13, L8 }
如何自然地对它们进行排序?我尝试了很多查询,但没有成功。
要通过条形码搜索商品,您可以使用 SQL
LIKE
运算符来查找与扫描的条形码匹配的商品。在您的情况下,如果条形码扫描仪提供 PC10364A
,您可以使用与此类似的查询:
SELECT * FROM your_stock_of_items WHERE barcode LIKE 'PC10364A';
此查询将返回条形码匹配的所有商品
PC10364A
遗憾的是,MySQL没有内置的自然排序功能,因此要实现“J1”、“J3”、“J18”等值的自然排序,可以将文本和数字部分拆分,然后按他们。
SELECT value FROM your_table -- or your_stock_of_items
ORDER BY
CAST(SUBSTRING_INDEX(value, '', -1) AS SIGNED),
SUBSTRING_INDEX(value, '', 1);
这里,
SUBSTRING_INDEX
用于将值拆分为文本和数字部分。然后,我们可以将数字部分转换为SIGNED
以确保数字排序。这将为您提供“J1”、“J3”、“J18”等值所需的自然排序顺序。