2017-02-18 21 views
1

私は列内のテキストを置き換える方法は?

Quarter 
------- 
Q1 2012 
Q2 2012 
Q1 2013 

のように見えると私は

Quarter 
------- 
Q1 
Q2 
Q1 

は、ここで私がして来たものだたい列があります。

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

を返し

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

をどれか助けに感謝します。

+0

閉じ括弧が間違っていますが、これが問題の場合は... – Turo

+0

いいえ、構文をコピーしている間は選択しませんでした。しかし、ありがとう。 –

+0

MSは私の方言ではありません...あなたは 'TABLE'キーワードが必要ですか?角かっこ[]は正しいですか? –

答えて

0

私は何かが欠けていない限り、これはあなたの望む結果を得る必要があります。

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

'無効な長さパラメータがLEFTまたはSUBSTRING関数に渡されました。 " しかし、私はそれをより普遍的なものにしたいと思っていました。 –

+0

これはうまく動作するので、これは奇妙です: 'ALTER TABLE [WA Products Sales]。[dbo]。[WA_Sales_Products] (Q、charindex( ''、Quarter)-1)' –

+0

私の編集した答えを見てください。 1つのcharより長い値に対してのみ更新が行われるように、where条件を追加しました。これにより、報告したエラーを防ぐことができます。 –

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()に悪い引数で問題を修正する必要があります。

関連する問題