Sql server 2008 如何在不使用光标的情况下替换列中的不同字符?
我想更换“-。!”从所有Sql server 2008 如何在不使用光标的情况下替换列中的不同字符?,sql-server-2008,tsql,Sql Server 2008,Tsql,我想更换“-。!”从所有productname,但使用 Sample items in table1 table1.productname Moshi Monsters 7-in-1 Accessory Pack - Poppet Mario vs. Donkey Kong Mini-Land Mayhem! 似乎只替换了- select case when CHARINDEX ('-',[productname])>0 then REPLACE (Produc
productname
,但使用
Sample items in table1
table1.productname
Moshi Monsters 7-in-1 Accessory Pack - Poppet
Mario vs. Donkey Kong Mini-Land Mayhem!
似乎只替换了-
select case
when CHARINDEX ('-',[productname])>0 then REPLACE (ProductName ,'-',' ')
when CHARINDEX ('!',[productname])>0 then REPLACE (ProductName ,'!','')
when CHARINDEX ('.',[productname])>0 then REPLACE (ProductName ,'.','')
else productname
end as productname
from table1
我应该如何解决这个问题,我在productname中有多个字符需要替换,例如示例中的字符和更多字符,而该列大约有5k大。
实际上,我想用更改后的名称更新table1,但想在更新之前查看哪些更改以及如何更改。这种replace
语句似乎不能满足所有要求。
似乎可以通过更新中的多次迭代来完成,但不知道如何在更新中使用迭代。我应该如何处理呢?您总是使用相同的源来替换字符串:原始的
ProductName
字段,该字段不会更改。您需要链接替换项:
output
Moshi Monsters 7 in 1 Accessory Pack Poppet
Mario vs. Donkey Kong Mini-Land Mayhem
expected output
Moshi Monsters 7 in 1 Accessory Pack Poppet
Mario vs Donkey Kong MiniLand Mayhem
很快就会变得丑陋不堪。您最好在客户端执行此操作。您总是使用相同的源来替换字符串:原始的
ProductName
字段,该字段不会更改。您需要链接替换项:
output
Moshi Monsters 7 in 1 Accessory Pack Poppet
Mario vs. Donkey Kong Mini-Land Mayhem
expected output
Moshi Monsters 7 in 1 Accessory Pack Poppet
Mario vs Donkey Kong MiniLand Mayhem
很快就会变得丑陋不堪。您最好在您的客户机中这样做。CASE语句只执行其WHEN/ELSE子句中的一个,即它发现的第一个适用的子句。在您的示例中,因为产品名称中有一个“-”字符,所以CASE执行特定的WHEN子句,然后停止。如果没有'-',则只会检查'!',而且只有在没有'的情况下它会检查“.”吗?Hellion谢谢,所以如果我从语句中删除
CASE
,那一定很好,对吗?我现在就试试看。正如Marc B所说,CASE语句只执行其WHEN/ELSE子句中的一个,即它发现的第一个适用的子句。在您的示例中,因为产品名称中有一个“-”字符,所以CASE执行特定的WHEN子句,然后停止。如果没有'-',则只会检查'!',而且只有在没有'的情况下它会检查“.”吗?Hellion谢谢,所以如果我从语句中删除CASE
,那一定很好,对吗?我现在就试试看。就像Marc B所说的那样。谢谢,虽然看起来很难看,但它又快又容易,这是我一直在寻找的。谢谢,虽然看起来很难看,但它又快又容易,这是我一直在寻找的。