繁体   English   中英

在SQL查询中替换多个字符串

[英]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.

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