繁体   English   中英

SQL用通配符替换

[英]SQL Replace with wildcards

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

示例:_Example-父SKU Example7bTL-子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

给定您的数据,只是用case

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

不应仅为了做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%'   

这会有所帮助

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM