我有问题,我无法解决。我正在做的选择返回8500+值,其中许多包含撇号,引号,逗号(“)(')(,)。
我正在使用sql来连接mysql。
所以它不是我需要处理的一个价值。我知道如何处理一个使用'吃乔'的价值 - 这是好食物!'或'吃乔' - 这是美食!';
有人可以帮我吗
DECLARE @dogno varchar(5)
DECLARE @ime VARCHAR(200)
DECLARE @adresa VARCHAR(200)
DECLARE nam CURSOR FOR
select Klienti.naziv as ime, Ulici.naziv+' '+Klienti.ulica_br as adresa , tKlienti_Dogovori.dogovor_br as dogno
from Klienti_Dogovori
INNER JOIN Klienti on Klienti.id=Klienti_Dogovori.klient_id
INNER JOIN Ulici on Ulici.id=Klienti.ulica_id
where Klienti_Dogovori.usluga_id=2 and Klienti_Dogovori.aktiven=1
open nam
fetch next from nam into @ime, @adresa, @dogno
while @@FETCH_STATUS = 0 BEGIN
DECLARE @sync varchar(max)
set @sync = '''update users set name=''' +cast(@ime as VARCHAR(200))+ ''', address=''' +cast (@adresa as varchar(200))+ ''' where dognumber=''' + cast (@dogno as varchar(5))
Execute(@sync) at mysqlserver
fetch next from nam into @ime, @adresa, @dogno
END
close nam
deallocate nam
此函数正常工作,直到出现具有撇号,引号或逗号(“)(')(,)的值。
答案 0 :(得分:0)
因为我发现怎么做才能回答我的问题。 它全部在选择
select replace(replace(replace(replace(replace(replace(REPLACE(Klienti.naziv,'''',''),'"',''),',',''),'“',''),'„',''),'’',''),'‘','') as ime, replace(replace(replace(replace(replace(replace(replace(Ulici.naziv+' '+Klienti.ulica_br,'''',''),'"',''),',',''),'“',''),'„',''),'’',''),'‘','') as adresa, Klienti_Dogovori.dogovor_br as dogno
from Klienti_Dogovori
INNER JOIN Klienti on Klienti.id=Klienti_Dogovori.klient_id
INNER JOIN Ulici on Ulici.id=Klienti.ulica_id
where Klienti_Dogovori.usluga_id=2 and Klienti_Dogovori.aktiven=1
答案 1 :(得分:0)
唉。对于你的链接服务器执行存储过程或UPDATE语句要比做这个可恶的事情好得多!
您还应该考虑进行基于集合的更新,而不是光标,这是不必要且缓慢的。