我已經繼承了使用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%');
我注意到,該查詢返回正確的信息,而不是在一個有用的順序。
我不知道如何對它排序,以便SKU最接近匹配$ localSKU變量的行排在第一位。
我嘗試這一點,但它沒有我希望的效果:
ORDER BY Difference(IB.LocalSKU, '$localSKU%') ASC
我也做模糊匹配的字符串一些閱讀,但我不知道如何在這裏實現它。
是否有一個有效的辦法:
- 搜索開始給定的字符串基於該字符串的親近
- 秩序的結果,然後由值
預期結果爲varchar :
參數:
$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我爲你添加了那些,讓我知道如果我可以進一步澄清 –