2011-10-05 3 views
0

Je veux mettre à jour une ligne qui est dans un format comme ceci ABC - DEF - GHI - ABD,
Comment utiliser un cmd comme ceci UPDATE tbl SET col = Replace(col,@var, '') WHERE Pk=something. Comment puis-je supprimer les tirets de fin ou de début? Par exmaple si @var est GHI, après le remplacement, la valeur de la rangée devrait être ABC-DEF-ABD ou si @var est ABC alors la valeur devrait être DEF - GHI - ABD.Remplacer dans TSql

+2

Faire une hypothèse ici, mais ne pas stocker des listes délimitées dans la base de données. Au lieu d'utiliser une table de jonction de un à plusieurs, il s'agit d'une simple instruction 'delete'. –

+0

Malheureusement, ce n'est pas mon appel. Nous avons une table de relation un à plusieurs, ce col est juste utilisé à des fins d'affichage. – user424134

Répondre

0

D'abord, tout à fait d'accord avec un commentaire ci-dessus .. Modifier Teh sschema de données pour ne pas stocker des listes de valeurs délimitées dans la colonne de base de données.

Mais, si cela est impossible, essayez ceci:

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

Que diriez-vous:

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

REPLACE intérieure remplace toutes les instances du milieu et « grands », et la partie extérieure de remplacer toutes les instances prises « finales ».

S'il existe des instances uniques, par ex. GHI, ajouter un autre et appel externe:

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

Ajouter un supplément « - » à la fin de la chaîne, remplacez @var avec le tableau de bord en annexe, la bande puis la fuite « - » quand tu as fini.

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

Vous pouvez utiliser:

-- 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