最近,我第一次被要求调查SQL,遇到了一个我无法解决的问题,我希望寻求帮助。我有两个SQL服务器,它们都在运行2008,而servers有一个连接到服务器B的服务器,
存在一个触发器,它将数据发送到存储过程,然后存储过程将insert上的数据从服务器A传递到服务器B,并且该数据中有名称,我面临的问题是,像O‘’Neil这样的名称由于撇号而失败,而当数据im收集只能从‘插入’表中获取数据时,我想不出如何用双撇号替换撇号。
我的扳机如下:
SELECT @PassengerName=PassengerName, @DocumentType=DocumentType, @BoardingSequenceNumber=BoardingSequenceNumber,
@FlightNumber=FlightNumber, @CarrierCode=CarrierCode, @DepartureTime=DepartureTime, @Destination=Destination, @DeviceAddress=DeviceAddress,
@Timestamp="Timestamp", @WorkstationId=WorkstationId, @DeliveredTimeStamp=DeliveredTimeStamp from inserted;
SELECT @cmd = 'sqlcmd -S '+@@SERVERNAME+' -E -d '+DB_NAME()+' -Q "exec SP_transfer @PassengerName='''+@PassengerName+''',@DocumentType='+@DocumentType+
',@BoardingSequenceNumber='+cast(@BoardingSequenceNumber as varchar(20))+
',@FlightNumber='+@FlightNumber+',@CarrierCode='+@CarrierCode+
',@DepartureTime='''+cast(@DepartureTime as varchar(20))+''',@Destination='+@Destination+
',@DeviceAddress='+@DeviceAddress+''',@TimeStamp='+cast(@Timestamp as varchar(32))+
''',@WorkstationId='+@WorkstationId+',@DeliveredTimeStamp='''+cast(@DeliveredTimeStamp as varchar(50))+'''"';我怎样才能使人名列取代任何撇号而不打破扳机,但在它试图开火之前?如果这个问题听起来很愚蠢,我会同意的,但正如我所说,我对这一行很陌生,
谢谢您抽时间见我,
克雷格
发布于 2014-01-08 14:54:13
我不确定您是否要删除或替换select中的撇号。SQL替换中有一个替换函数(string,replacestring,replacewith)
SELECT replace('test','est', 'aste')
returns
Taste因此,根据您正在使用的字段,您可以删除触发器选择上的撇号。
SELECT
@PassengerName=replace(PassengerName,'''',''),
@DocumentType=replace(DocumentType,'''',''),
@BoardingSequenceNumber=replace(BoardingSequenceNumber,'''',''),
@FlightNumber=replace(FlightNumber,'''',''),
@CarrierCode=replace(CarrierCode,'''',''),
@DepartureTime=replace(DepartureTime,'''',''),
@Destination=replace(Destination,'''',''),
@DeviceAddress=replace(DeviceAddress,'''',''),
@Timestamp="Timestamp",
@WorkstationId=WorkstationId,
@DeliveredTimeStamp=DeliveredTimeStamp
from inserted;如果你不想远程设置撇号,你可以用同样的方式将它们加倍。
https://stackoverflow.com/questions/20998476
复制相似问题