MySQL - 搜索和自然排序

问题描述 投票:0回答:1

我有库存。例如,项目编号(以及 DB 中的值)是“C10364A”。该商品上有条形码。当我用条形码扫描仪扫描它时,代码值为

PC10364A

我想通过搜索进行选择输入。当我用条码扫描仪输入时,如何搜索并选择这个确切的项目?

第二个问题是关于自然排序的。

呈现价值观:

{ J1, J3, J18, J41, J12, L1, L13, L8 }

如何自然地对它们进行排序?我尝试了很多查询,但没有成功。

mysql search natural-sort
1个回答
0
投票

[Q1]通过条形码搜索商品:

要通过条形码搜索商品,您可以使用 SQL

LIKE
运算符来查找与扫描的条形码匹配的商品。在您的情况下,如果条形码扫描仪提供
PC10364A
,您可以使用与此类似的查询:

SELECT * FROM your_stock_of_items WHERE barcode LIKE 'PC10364A';

此查询将返回条形码匹配的所有商品

PC10364A

[Q2]自然排序

遗憾的是,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”等值所需的自然排序顺序。

© www.soinside.com 2019 - 2024. All rights reserved.