2010-12-10 56 views
1

我試圖在「 - 」字符後從我的描述列中刪除文本。我知道我必須使用Right()函數,但語法看起來像循環遍歷所有記錄並更改Description列中的所有記錄?SQL Server Right()函數從列上的某個點刪除字符

例...

BEFORE:

0002 55 Actor Hill - 0002 
0004 57 Adair - 0004 
0005 74 Adams - 0005 

AFTER:

0002 55 Actor Hill 
0004 57 Adair 
0005 74 Adams 
+0

這是一個什麼樣的列或3列? – gbn 2010-12-10 14:07:41

回答

3

在SQL Server試試這個:

DECLARE @String varchar(50) 
SET @String='0002 55 Actor Hill - 0002' 
SELECT LEFT(@String,CHARINDEX(' - ',@String)-1) 

OUTPUT:

-------------------------------------------------- 
0002 55 Actor Hill 

(1 row(s) affected) 

這裏是使用了表的示例:

DECLARE @YourTable table (RowValue varchar(50)) 
INSERT @YourTable VALUES ('0002 55 Actor Hill - 0002') 
INSERT @YourTable VALUES ('0004 57 Adair - 0004') 
INSERT @YourTable VALUES ('0005 74 Adams - 0005') 

SELECT 
    LEFT(RowValue,CHARINDEX(' - ',RowValue)-1), '|'+LEFT(RowValue,CHARINDEX(' - ',RowValue)-1)+'|' 
    FROM @YourTable 

OUTPUT:

-------------------- --------------------- 
0002 55 Actor Hill |0002 55 Actor Hill| 
0004 57 Adair  |0004 57 Adair| 
0005 74 Adams  |0005 74 Adams| 

(3 row(s) affected) 

我用|字符,以顯示沒有尾部空格

改變實際數據用途:

UPDATE @YourTable 
    SET RowValue=LEFT(RowValue,CHARINDEX(' - ',RowValue)-1) 
+0

我脫掉了更新聲明中的「-1」,它就起作用了!謝謝!!! – Spidermain50 2010-12-10 14:06:28

0

假定第一列的內容是要在最後一欄刪除

UPDATE 
    Mytable 
SET 
    StringField3 = REPLACE(StringField3, ' - ' + NumberLikeField1, '') 

這種方式,你不必對價值的擔心像

00007 99 Saxa-Cotburg-Gotha - 00007