如何替换列中的文本?

时间:2017-02-18 09:35:29

标签: sql sql-server

我有一个看起来像

的列
Quarter
-------
Q1 2012
Q2 2012
Q1 2013

我想要

Quarter
-------
Q1
Q2
Q1

以下是我所拥有的内容:

UPDATE TABLE [WA Products Sales].[dbo].[WA_Sales_Products]
SET 
    Quarter = REPLACE (Quarter, SUBSTRING(Quarter, 1, CHARINDEX(' ', Quarter)-1)

返回

Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'TABLE'.

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

此查询的问题:

UPDATE TABLE [WA Products Sales].[dbo].[WA_Sales_Products]
    SET Quarter = REPLACE(Quarter, SUBSTRING(Quarter, 1, CHARINDEX(' ', Quarter)-1)

Quarter没有空格时失败。一个更小的问题是LEFT()更合适。您可以通过添加空格来解决第一个问题:

UPDATE TABLE [WA Products Sales].[dbo].[WA_Sales_Products]
    SET Quarter = LEFT(Quarter, CHARINDEX(' ', Quarter + ' ') - 1);

这应该可以解决LEFT()的错误参数问题。

答案 1 :(得分:0)

除非我遗漏了某些内容,否则这应该会得到您想要的结果:

UPDATE [WA Products Sales].[dbo].[WA_Sales_Products]
SQL Quarter = LEFT(Quarter, 2)
WHERE LEN(Quarter) > 1 -- added this condition