2012-02-21 34 views
7

Dưới đây là bảng, mỗi giá trị cột được bao bọc bởi dấu ngoặc kép (")Làm cách nào để loại bỏ báo giá kép khỏi giá trị của cột? .?

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

Làm thế nào để loại bỏ dấu nháy kép từ mỗi cột tôi đã cố gắng này cho mỗi cột: -

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

nhưng tìm kiếm giải pháp đáng tin cậy hơn. Đây không nếu có cột đã dấu không gian trắng

+0

bạn có thể sử dụng TRIM() để thoát khỏi dấu không gian trắng - tôi sẽ làm điều đó họ cùng cách – dom

+1

bạn có mong đợi dấu ngoặc kép trong dữ liệu thực tế? – gbn

+0

@Aaron thats chính xác nó không cắt đôi dấu ngoặc kép nhưng theo câu cuối cùng trong câu hỏi của mình, ông lo ngại về các khoảng trắng sau ... – dom

Trả lời

26

Chỉ cần sử dụng REPLACE?

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

Câu trả lời của bạn cũng tốt. Nhưng sau đó tôi phải viết cập nhật tabl ..... cho mỗi cột ... trong khi không có mệnh đề where i có thể cập nhật tất cả các cột trong một câu lệnh cập nhật .. Cảm ơn anyways – 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

Nhanh chóng và bẩn, nhưng nó sẽ làm việc :-) Bạn có thể mở rộng và viết những dòng này như một thủ tục lưu trữ dùng trong một tên bảng, nhân vật bạn muốn thay thế, nhân vật để thay thế với, Thực hiện một chuỗi biến, vv ...

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') 
Các vấn đề liên quan