You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js调用SQL Server预查询单引号转义输出反斜杠异常如何解决

问题根因

  • SQL Server 中单引号的转义规则是两个连续单引号,而非反斜杠转义,你在SQL中用\转义单引号本身不符合SQL Server语法规则
  • JS 中反斜杠是特殊转义字符,你写的replace("\", "'")存在语法错误:单个\会转义后面的双引号,导致字符串匹配逻辑完全失效
  • 手动拼接JSON字符串容易触发转义冲突,是导致你输出异常的核心原因之一

可行解决方法

方案1:直接修改SQL语句(最推荐)

把SQL里的转义逻辑换成SQL Server原生支持的单引号转义,不需要后续JS处理:

INSERT INTO @Return
    SELECT 'You' + '''' + 've assigned ' + CONVERT(varchar(4), COUNT(1)) + ' to yourself'

两个连续的'在SQL Server执行后会自动输出为1个单引号,拿到的strMessage直接就是You've assigned X to yourself

方案2:修正JS中的字符串替换逻辑

如果不想改SQL,就修正replace的写法:
反斜杠在JS字符串中需要用两个反斜杠表示,要全局替换的话需要加正则的g标识:

// 替换所有反斜杠为单引号
strMessage = strMessage.replace(/\\/g, "'");

方案3:修复JSON拼接逻辑(必改,避免后续其他转义问题)

不要手动拼接JSON字符串,用JSON.stringify自动处理所有转义字符,避免特殊字符导致的JSON格式错误:

function GbWebhookFunction(){
    this.sendMessage = async function(strMessage){
        console.log(strMessage);
        // 用JSON.stringify自动生成合法的JSON内容
        const body = JSON.stringify({
            text: strMessage
        });
        fetch(webhookURL, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json; charset=UTF-8',
            },
            body: body,
        }).then((response) => {
            console.log(response);
        });
    };
};

内容的提问来源于stack exchange,提问作者Trè254

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:27:03