我有一个包含三列的表格: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)
问题:是否有更简洁的方法将替换应用于所有列?例如单行表达式?
谢谢
没有用于此的单行脚本,但是当我将数据导入 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)