首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Apostrophe替换为双Apostrophe

将Apostrophe替换为双Apostrophe
EN

Stack Overflow用户
提问于 2014-01-08 14:32:35
回答 1查看 433关注 0票数 0

最近,我第一次被要求调查SQL,遇到了一个我无法解决的问题,我希望寻求帮助。我有两个SQL服务器,它们都在运行2008,而servers有一个连接到服务器B的服务器,

存在一个触发器,它将数据发送到存储过程,然后存储过程将insert上的数据从服务器A传递到服务器B,并且该数据中有名称,我面临的问题是,像O‘’Neil这样的名称由于撇号而失败,而当数据im收集只能从‘插入’表中获取数据时,我想不出如何用双撇号替换撇号。

我的扳机如下:

代码语言:javascript
复制
 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))+'''"';

我怎样才能使人名列取代任何撇号而不打破扳机,但在它试图开火之前?如果这个问题听起来很愚蠢,我会同意的,但正如我所说,我对这一行很陌生,

谢谢您抽时间见我,

克雷格

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-08 14:54:13

我不确定您是否要删除或替换select中的撇号。SQL替换中有一个替换函数(string,replacestring,replacewith)

代码语言:javascript
复制
SELECT  replace('test','est', 'aste')
returns 
Taste

因此,根据您正在使用的字段,您可以删除触发器选择上的撇号。

代码语言:javascript
复制
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;

如果你不想远程设置撇号,你可以用同样的方式将它们加倍。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20998476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档