0

我有我无法解决的问题。我所做的选择返回 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

这个函数可以正常工作,直到它得到一个带有撇号、引号或逗号 (")(')(,) 的值。

4

2 回答 2

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
于 2013-10-04T13:23:04.013 回答
0

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

您还应该考虑进行基于集合的更新,而不是不必要且缓慢的游标。

于 2013-10-04T14:36:43.650 回答