我有一个表有不受欢迎的字符(Ý),我想用“I”替换它。在我尝试使用其他列名称的代码之前,它完美无缺。但是现在虽然在debuging我可以看到它修复了行,但最后db没有变化......这是我的代码如下:
DECLARE @CARI_NAME varchar(100)
DECLARE CRS_FixCariNameCURSOR FOR
SELECT CARI_NAME FROM TBLCASABIT
OPEN CRS_CariIsimDuzelt
FETCH NEXT FROM CRS_FixCariNameINTO @CARI_NAME
WHILE @@FETCH_STATUS=0
BEGIN
IF @CARI_NAME LIKE '%Ý%'
UPDATE TBLCASABIT SET @CARI_NAME = REPLACE(@CARI_NAME ,'Ý','I')
WHERE CURRENT OF CRS_FixCariName
FETCH NEXT FROM CRS_FixCariNameINTO @CARI_NAME
END
CLOSE CRS_FixCariName
DEALLOCATE CRS_FixCariName
答案 0 :(得分:2)
UPDATE TBLCASABIT SET @CARI_NAME = REPLACE(@CARI_NAME ,'Ý','I')
你更新变量而不是列!
使用:
UPDATE TBLCASABIT SET CARI_NAME = REPLACE(@CARI_NAME ,'Ý','I')
如果您要更新的列名为CARI_NAME
但更重要的是 - 为什么你甚至在这里使用光标? 简单更新可以提高工作效率(如果我错了,请纠正我):
UPDATE TBLCASABIT
SET CARI_NAME = REPLACE(CARI_NAME ,'Ý','I')
WHERE CARI_NAME LIKE '%Ý%'