2012-02-21 16 views
7

Oto tabela, każda wartość kolumny owinięte cudzysłów (")Jak pozbyć się podwójnego cudzysłowu z wartości kolumny? .?

Name Number  Address Phone1 Fax Value Status 
"Test" "10000000" "AB" "5555" "555" "555" "Active" 

Jak usunąć podwójny cudzysłów z każdej kolumny Próbowałem to dla każdej kolumny: -

UPDATE Table 
SET Name = substring(Name,1,len(Name)-1) 
where substring(Name,len(Name),1) = '"' 

ale patrząc na bardziej niezawodne rozwiązanie. To nie jeśli kolumna zbędne spacje

+0

można użyć TRIM(), aby pozbyć spływu spacji - i zrobi to oni tak samo – dom

+1

Czy można oczekiwać cytaty w rzeczywistych danych? – gbn

+0

@Aaron to poprawi nie robi podwójnych cudzysłowów, ale jak w ostatnim zdaniu w swoim pytaniu, obawia się o ciągłe białe przestrzenie ... – dom

Odpowiedz

26

wystarczy użyć WYMIENIĆ?

... 
SET Name = REPLACE(Name,'"', '') 
... 
10
UPDATE Table 
    SET Name = REPLACE(Name, '"', '') 
    WHERE CHARINDEX('"', Name) <> 0 
+0

Twoja odpowiedź jest również dobra. Ale muszę napisać zaktualizuj tabl ..... dla każdej kolumny ... podczas gdy bez klauzuli where mogę zaktualizować wszystkie kolumny w jednym oświadczeniu aktualizacji. Dzięki i tak – User13839404

0
create table #t 
(
    Name varchar(100) 
) 

insert into #t(Name)values('"deded"') 
Select * from #t 

update #t Set Name = Coalesce(REPLACE(Name, '"', ''), '') 
Select * from #t 
drop table #t 
0

szybki i brudny, ale to będzie działać :-) Można poszerzyć i piszę to jako procedurę magazynu biorąc w nazwie tabeli, postać chcesz zastąpić, znak zastąpić, wykonać zmiennej String, itp ...

DECLARE 
@TABLENAME VARCHAR(50) 

SELECT @TABLENAME = 'Locations' 

SELECT 'Update ' + @TABLENAME + ' set ' + column_Name + ' = REPLACE(' + column_Name + ',''"'','''')' 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = @TABLENAME 
and data_Type in ('varchar') 
Powiązane problemy