PHPスクリプトを使用してSQL Server 2012データベースにアクセスするプロジェクトを継承しました。アプリケーションでは、ユーザーが複数のパラメーターを入力し、それらのパラメーターに基づいて要求を行うことができます。英数字の文字列で類似性をソートMS SQL Server 2012
私が問題を抱えているのは、ユーザーが英数字の文字列で始まるSKUを持つアイテムを検索できるフィールドです。
これは、プロジェクトで使用されたクエリです:
SELECT top 10 IB.LocalSKU
, Cast(Round(IB.GoalMargin, 2) AS Decimal(10,2)) AS GoalMargin
, CASE WHEN IB.MAP = 0 THEN NULL ELSE IB.MAP END AS Min
, IB.ProductCost
, IB.ShippingEstimate
, EB.Price AS CurrentPrice
FROM intra.InventoryBase IB INNER JOIN intra.DropshipChannelAdvisorSKUs CA
ON IB.LocalSKU = CA.LocalSKU
LEFT JOIN intra.eBayQoHFeedback EB
ON CA.ChannelAdvisorSKU = EB.SKU
WHERE LOWER(IB.LocalSKU) LIKE LOWER('$localSKU%')
AND LOWER(SupplierID) LIKE LOWER('%$supplierId%')
AND LOWER(IB.Category) LIKE LOWER('%$category%')
AND LOWER(IB.Dropship) LIKE LOWER('%$dropship%');
私は、クエリが役に立つために、正しい情報を返しますが、いないことに気づきました。
$ localSKU変数に最も近いSKUの行が最初にランク付けされるようにソートする方法がわかりません。
私はこれを試みたが、それは私が望んで効果がありませんでした:
ORDER BY Difference(IB.LocalSKU, '$localSKU%') ASC
を私もファジー文字列マッチングにいくつかの読書を行ってきたが、私はここでそれを実装するかどうかはわかりません。
に効果的な方法があります:、その後、値
によって検索結果を期待その文字列の近さに基づいて、指定された文字列で
- 検索:
パラメータ:
の$localSKU = "FMCPL1CY00"; $supplierId = 87; $category = "Premium Floor Liners"; $dropship = True;
期待される結果:
-------------------------------------------------------------------------------- | FMCPL1CY00* | GoalMargin | 0 | ProductCost | ShippingEstimate | CurrentPrice | | FMCPL1CY01* | GoalMargin | 0 | ProductCost | ShippingEstimate | CurrentPrice | | FMCPL1CY02* | GoalMargin | 0 | ProductCost | ShippingEstimate | CurrentPrice | | FMCPL1CY03* | GoalMargin | 0 | ProductCost | ShippingEstimate | CurrentPrice | --------------------------------------------------------------------------------
実績:
------------------------------------------------------------------------------------- | FMCPL1CH04221509 | GoalMargin | 0 | ProductCost | ShippingEstimate | CurrentPrice | | FMCPM1SA0021302 | GoalMargin | 0 | ProductCost | ShippingEstimate | CurrentPrice | | FMCPL1TY07801509 | GoalMargin | 0 | ProductCost | ShippingEstimate | CurrentPrice | | FMCPL1TY05721502 | GoalMargin | 0 | ProductCost | ShippingEstimate | CurrentPrice | -------------------------------------------------------------------------------------
期待した結果と実際の結果を表示してください。 – TheGameiswar
また、 '$ localSKU'のいくつかの例がありますか? – scsimon
@TheGameiswar私はあなたのためにそれらを追加しました。私はさらに明確にすることができるかどうか教えてください –