我有一个从我的SQL Server数据库中填充的搜索栏和HTML表。每当我搜索时,它都会在SKU
和SKU Description
上使用LIKE
命令来过滤表。显示结果时,我希望它根据与SKU
列的匹配最匹配的结果。
例如,如果我搜索"100"
,它将显示位于SKU
或SKU Description
列中的结果。但是,我希望它过滤,以使SKU
列中匹配的值首先在SKU Description
列中匹配的值之前首先看到。
我认为这只是在查询中添加一些东西的问题,但是我该怎么做?
这是我的查询:
$query = "SELECT Product_ID, [Major Category], [Minor Category], [Product Report Code], SKU, [SKU Description], [SKU Status], CAST([Create Date] AS DATE) AS Date, Group_ID, [SKU Group]
FROM vProducts
WHERE CONCAT(SKU, [SKU Description])
LIKE '%".$valueToSearch."%'";
这可能是过分的,您必须将其格式化为" $ QUERY"。这是SQL。
SELECT A.Product_ID, A.[Major Category], A.[Minor Category], A.[Product Report Code], A.SKU, A.[SKU Description], A.[SKU Status], A.Date, A.Group_ID, A.[SKU Group], A.Sort
FROM (
SELECT Product_ID, [Major Category], [Minor Category], [Product Report Code], SKU, [SKU Description], [SKU Status], CAST([Create Date] AS DATE) AS Date, Group_ID, [SKU Group], 1 AS Sort
FROM vProducts
WHERE SKU LIKE '%' + @value + '%'
UNION all
SELECT Product_ID, [Major Category], [Minor Category], [Product Report Code], SKU, [SKU Description], [SKU Status], CAST([Create Date] AS DATE) AS Date, Group_ID, [SKU Group], 2 AS Sort
FROM vProducts
WHERE [SKU Description] LIKE '%' + @value + '%'
) A
ORDER BY A.Sort