2012-02-21 71 views
7

下面是表,每列的值是包裹着雙引號(「)如何擺脫列值的雙引號? ?

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

如何從每一列中刪除雙引號我想這對每列: -

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

但在尋找更可靠的解決方案。這將失敗,如果有一列已經尾隨空白

+0

你可以使用TRIM()擺脫尾隨空格的 - 我會做他們同樣的方式 – dom 2012-02-21 15:53:37

+1

你期望在實際的數據報價? – gbn 2012-02-21 15:54:40

+0

@Aaron thats糾正它不修剪雙引號,但根據他的問題中最後一句話,他擔心尾隨的白色空間... – dom 2012-02-21 16:01:55

回答

26

只需使用更換?

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

你的答案也是好的,但然後我必須寫更新tabl .....每個列...而沒有where子句我可以更新一個更新語句中的所有列..謝謝反正 – User13839404 2012-02-21 18:25:56

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

快速和骯髒的,但它的工作:-) 你可以擴大和寫爲取一個表名存儲過程,你要替換字符,字符與更換,執行一個字符串變量,等等

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