从 SQL Server 中的所有列中删除引号

Nic*_*Nic 1 sql sql-server

我有一个包含三列的表格:A、B 和 C。

A ; B; C
"a1"; "b1"; "c1"
"a2"; "b2"; "c3"
"a3"; "b3"; "c3"
Run Code Online (Sandbox Code Playgroud)

我需要从表中的所有行中删除引号。在这篇文章中,我找到了一个可行的解决方案,但需要指定所有列的名称:

UPDATE myTable
SET A  = REPLACE(A, '"', '');

UPDATE myTable
SET B  = REPLACE(B, '"', '');

UPDATE myTable
SET C  = REPLACE(C, '"', '');
Run Code Online (Sandbox Code Playgroud)

问题:是否有更简洁的方法将替换应用于所有列?例如单行表达式?

谢谢

M.A*_*Ali 5

没有用于此的单行脚本,但是当我将数据导入 sql server 后,当我摆脱临时表中的所有双引号时,我的代码中有几行,请注意所有这些列都是 varchar数据类型。

-- 去掉数据中的双引号

Declare @ColName SYSNAME , @Sql Nvarchar(Max)


Declare Cur Cursor FOR 
SELECT c.name 
from sys.columns c inner join sys.tables t on c.object_id = t.object_id
Where t.name = 'myTable'   --<-- Your Table name

 OPEN Cur 

  FETCH NEXT FROM Cur INTO @ColName

WHILE @@FETCH_STATUS = 0 
BEGIN


      SET @SQL = 'UPDATE myTable
                    SET ' + QUOTENAME(@ColName) + ' = LTRIM(RTRIM(ISNULL(REPLACE(' + QUOTENAME(@ColName) + ' , ''"'' , '''') , '''')))'

      --PRINT @SQL 
      Exec sp_executesql @Sql 

      FETCH NEXT FROM Cur INTO @ColName
END
CLOSE Cur 
DEALLOCATE Cur
GO
Run Code Online (Sandbox Code Playgroud)