2011-10-05 50 views
0

我想更新一個格式如下的行ABC - DEF - GHI - ABD
使用像這樣的cmd UPDATE tbl SET col = Replace(col,@var, '') WHERE Pk=something.如何刪除尾隨或前導連字符?例如,如果@var是GHI,在替換之後,行值應該是ABC-DEF-ABD或者如果@var是ABC,則值應該是DEF -GHI-ABD。替換爲TSql

+2

這裏製作一個假設,但不分隔列表存儲在數據庫中。相反,使用一對多結點表,這是一個簡單的'delete'語句。 –

+0

不幸的是,這不是我的電話。我們確實有一對多的關係表,這個列僅用於顯示目的。 – user424134

回答

0

首先,完全註釋同意上述..更改德數據sschema到數值所限定的名單沒有存儲在數據庫列。

但是,如果這是不可能的,試試這個:

Update Table Set 
    colName = Replace(Replace(colName, '- ' + @var, ''), @var + ' -', '') 
Where pk = @pk 
0

如何:

UPDATE tbl SET col = replace(replace(col, @var + ' – ', ''), ' – ' + @var, '') 

內替換替換所有中層和「領導」的情況下,與外部替換捕獲所有「最終」的實例。

如果存在單個實例, GHI,增加進一步的和最外面的呼叫:

所有的
UPDATE tbl SET col = replace(replace(replace(col, @var + ' – ', ''), ' – ' + @var, ''), @var, '') 
2

添加一個額外的 - 到字符串的結尾,有追加,然後去掉尾隨破折號替換@var「」「 - 」當你完成。

UPDATE tbl 
    SET col = LEFT(REPLACE(col + ' - ', @var+' - ', ''), LEN(col)-6) 
    WHERE Pk = something 
0

您可以使用:

-- 1: replace(col,@var, '') => your replacement 
-- 2: replace(#1, ' - ', '-') => remove spaces 
-- 3: replace(#2, '- ', '') => remove first hyphen and space 
-- 4: replace(#3, ' -', '') => remove last hyphen and space 

UPDATE tbl 
    SET col = replace(replace(replace(replace(col,@var, ''), ' - ', '-'), '- ', ''), ' -', '')   
WHERE Pk=something