[英]Replace Multiple Strings in SQL Query
我正在SQL Server中编写一个SQL查询,我需要用一个字符串值替换多个字符串值。 例如
Product Quantity
------- --------
Apple 2
Orange 3
Banana 1
Vegetable 7
Dairy 6
会成为
Product Quantity
------- --------
Fruit 2
Fruit 3
Fruit 1
Vegetable 7
Dairy 6
我知道如何执行此操作的唯一方法是在SELECT子句中使用嵌套的REPLACE。
SELECT
REPLACE('Banana', REPLACE('Orange', REPLACE('Banana', Product, 'Fruit'),
'Fruit'), 'Fruit') AS Product
FROM
Table
有没有更简单的方法?
编辑:产品类别中可能还有其他值。 见上面编辑的例子。
到目前为止,BradC有最好的答案,但如果你由于某种原因无法创建额外的表格,我想发布一个Kibbee答案的改编:
SELECT
CASE WHEN Product IN ('Banana', 'Apple', 'Orange') Then 'Fruit'
ELSE Product END
FROM [Table]
创建一个新的“类别”表,其中包含您的产品列表以及它们所属的“类别”。
然后做一个内部联接。
Select
Case Product WHEN 'Banana' Then 'Fruit'
WHEN 'Apple' Then 'Fruit'
WHEN 'Orange' Then 'Fruit'
ELSE Product
END
FROM Table
如果没有其他产品可以做到:
SELECT 'Fruit' AS Product,
Quantity
FROM Table
如果还有其他产品,请添加WHERE子句
WHERE Product IN ('Banana', 'Orange', 'Apple')
您可以使用单个列“产品”列创建临时表,并插入要替换的所有产品名称。
然后针对目标表执行内部联接以进行更新。
UPDATE
Table
SET Product = 'Fruit'
FROM
Table t1 INNER JOIN #Table t2 on t1.Product = t2.Product
用于在SQL中分隔文本的单引号:
CASE WHEN ShiptoPlant IN (';','/',' ') Then '' ELSE ShipToPlant END
从长远来看,建立“类别”表的建议将是您的最佳选择。
有关示例,请查看此链接: 数据属于您的表格 - 而不是您的代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.