2013-10-03 44 views
0

我有我无法解决的问题。在选择IM做的回报8500+许多他们包含撇号,引号,昏迷(“)(')(,)的值。
我使用SQL MySQL连接。
SQL Server到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

因为我发现如何去做它不适合回答我的问题。 其全部在选择

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 
0

呃。对你的链接服务器执行存储过程或UPDATE语句要比做这种可恶的事情要好得多!

你也应该看看做一个基于集合的更新,而不是不必要和缓慢的光标。