Sql-Server
批量更新以替換 SQL Studio 管理中的特殊字元
我正在嘗試刪除/更正我的數據庫中的一些特殊字元,這些字元在導出時會表現出奇怪的行為。
具體
&
和撇號’
我執行了一個查詢來查找包含特殊字元的值,雖然查詢成功找到了它們,但我仍然無法用第二個查詢 UPDATE 替換/刪除它們(沒有任何反應):
SELECT [Loc1],[IND_KEY] FROM [Database].[dbo].[List] WHERE CONVERT(VARCHAR(MAX), Loc1)LIKE'%[&]%'; UPDATE [Database].[dbo].[List] SET Loc1 = REPLACE(CAST(Loc1 as nVarchar(4000)), '[&]','and') WHERE Loc1 LIKE '%[&]%';
我正在使用 Microsoft SQL Server Management Studio。
如果我想用單引號替換撇號怎麼辦(最後一個在導出時不會引起問題)。例如
UPDATE [Database].[dbo].[List] SET Loc1 = REPLACE(CAST(Loc1 as NVARCHAR(4000)), CHAR(39), '''') WHERE Loc1 LIKE'Lake'''s%';
它似乎不起作用,是否需要以某種方式引用單引號?
不要將 REPLACE 函式中的文字括在方括號中。
LIKE
由於您正在尋找單個字元,因此子句中也不需要這些附件。嘗試:
UPDATE [Database].[dbo].[List] SET Loc1 = REPLACE(CAST(Loc1 as nvarchar(4000)), N'&', N'and') WHERE Loc1 LIKE N'%&%';`
另外,我認為這裡不需要
CAST
:UPDATE [Database].[dbo].[List] SET Loc1 = REPLACE(Loc1, N'&', N'and') WHERE Loc1 LIKE N'%&%';
您應該能夠引用要替換為字元程式碼的單個字元,以確保您引用的是確切的字元。
NCHAR()
您可以使用函式來做到這一點。以下是您的
REPLACE()
函式變成的範例:REPLACE(CAST(Loc1 as NVARCHAR(4000)), NCHAR(38), N'and')
& 符號的十進制程式碼是 38,撇號可以使用 39。