2012-06-07 14 views
13

Mam tabelę z kilkoma kolumnami varchar, które są prawie identyczne z kluczami podstawowymi, które mam w innej tabeli, z wyjątkiem okresu (.). Spojrzałem na funkcję replace w T-SQL, ale pierwszy argument nie jest wyrażeniem. Jak mogę usunąć wszystkie wystąpienia określonej litery za pomocą SQL? Wygląda na to, że poprawną odpowiedzią może być zastąpienie łańcuchem o zerowej długości. Czy to jest blisko?Usuwanie pojedynczego znaku z pola varchar SQL Server 2008

Dla każdego, kogo pytanie nie zawierało wysiłku badawczego, było to spowodowane głównie niezrozumieniem samej dokumentacji.

+5

Jaka dokumentacja gapisz? Pierwszy parametr dla [REPLACE] (http://msdn.microsoft.com/en-us/library/ms186862.aspx) jest wyrażeniem łańcuchowym. – Oded

+0

zobacz "Zastąp" fn na http://msdn.microsoft.com/en-us/library/ms186862.aspx – Gerrat

+0

Zrobiłem dokumentację string_dokumentacji msdn, aby powiedzieć, że musi to być literał łańcuchowy, głównie dlatego, że podane przykłady nie zawierały " t użyj kolumny. dzięki. – wootscootinboogie

Odpowiedz

38

można zaktualizować tabelę bezpośrednio przy użyciu REPLACE na wartości kolumna:

UPDATE myTable 
SET myColumn = REPLACE(myColumn, '.', '') 
4

Czy chcesz usunąć wszystkie wystąpienia. z ciągu? Jeśli tak, masz rację o REPLACE:

DECLARE @Example TABLE 
(
    Value VARCHAR(100) 
) 
INSERT @Example (Value) 
VALUES ('Test.Value'), ('An.otherT.est') 

SELECT 
    REPLACE(Value, '.', '') 
FROM 
    @Example 

-- Replace only the first '.' 
SELECT 
    STUFF(Value, CHARINDEX('.', Value, 0), 1, '') 
FROM 
    @Example 

Edit, czyniąc przykład trochę bardziej użyteczne od kiedy bawił się z nim tak, równie dobrze mogę zaksięgować przykład. :)

6
update your_table 
set some_column = replace(some_column, '.', '') 
Powiązane problemy