SQL替换为通配符

时间:2016-07-20 21:18:24

标签: sql sql-server tsql replace

我慢慢发现替换字符串不适用于Wildcards。我所拥有的是大约10个SKU,这10个SKU每个都有大约20个子SKU。

示例:_Example - 父SKU          Example7bTL - Child SKU

- 最终结果是将所有子SKU转换为_Example,这样我就可以获得以干净格式销售的单位总和。

我目前的参考资料。

use test


CREATE TABLE #test (
Test int,
BillQty char(300) )


select   Quantity, REPLACE (SKU,  '%EXAMP%', 'Example') As Sku
from test.dbo.tblSFCOrderTxn




drop table #Test
Raw Data Example---

Quantity        SKU
210            EXAMPLE7BOTL-C
42             EXAMPLE4BOTL
30             EXAMPLE1BOTL
28             EXAMPLE12BOTL
100            EXAMPLE7BOTL
97             EXAMPLE4BOTL
29             EXAMPLE7BOTL-C

我想要的是什么

Quantity        SKU
536             _Example

我正在使用SQL Server 2012

3 个答案:

答案 0 :(得分:0)

根据您的数据,只需使用case

select (case when left(sku, 1) = '_' then '_Example' else sku end)

答案 1 :(得分:0)

不应该只是为了做一个sum()来改变数据。我会选择:

SELELCT   
CASE WHEN SKU LIKE '%EXAMP%' THEN '_Example' ELSE SKU END AS SKU,
SUM(Quantity) AS Quantity
FROM test.dbo.tblSFCOrderTxn
GROUP BY CASE WHEN SKU LIKE '%EXAMP%' THEN '_Example' ELSE SKU END
ORDER BY 1

如果你真的想改变数据,那就是:

UPDATE test.dbo.tblSFCOrderTxn
SET SKU = '_Example'
WHERE SKU LIKE '%EXAMP%'   

答案 2 :(得分:0)

这会很有帮助

SELECT SUM(Quantity),'_Example' AS SKU FROM test.dbo.tblSFCOrderTxn GROUP BY CASE SKU WHEN '1' THEN '1' ELSE '2' END