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

SQL Server 2014查询输出TaskAction字段末尾出现单引号问题求助

解决TaskAction字段末尾多余单引号的问题

我看了你的SQL脚本和输出情况,问题很明确:TaskAction字段末尾的单引号来自你CASE表达式中ELSE分支里多余的单引号拼接。

问题根源分析

在你的脚本里,有两处ELSE分支使用了''''(四个单引号),这在SQL Server里会被解析为一个单引号并直接拼接到结果字符串的末尾:

  1. 当Asset.Vicinity为空或等于空字符串时,你用了ELSE '''',这会给TaskAction额外添加一个单引号;
  2. 当不满足范围说明的条件(Spec != 1或ValueLow/ValueHi为空)时,你同样用了ELSE '''',又会多叠加一个单引号。

这些多余的单引号累加起来,就导致了每条数据末尾出现不必要的单引号。

修改后的查询脚本

把那些多余的''''替换为空字符串('')即可解决问题,同时我还修正了范围说明拼接里的格式小问题,以下是修正后的完整脚本:

SELECT 
    WOtask.PK, 
    WOPK, 
    TaskNo, 
    TaskAction = CASE 
                    WHEN WOTask.AssetPK IS NOT NULL THEN 
                        '<b>' + Asset.AssetName + ' [' + Asset.AssetID + ']</b> ' + 
                        CASE 
                            WHEN Asset.Vicinity IS NOT NULL AND Asset.Vicinity <> '''' THEN RTRIM(Asset.Vicinity) + ': ' 
                            ELSE '' -- 替换原有的''''为'',避免添加多余单引号
                        END + 
                        WOtask.TaskAction + 
                        CASE 
                            WHEN CONVERT(varchar, ValueLow) IS NOT NULL AND CONVERT(varchar, ValueHi) IS NOT NULL AND Spec = 1 THEN 
                                ' (Range: ''' + CONVERT(VARCHAR,CONVERT(FLOAT,ISNULL(ValueLow,0))) + ''' - ''' + CONVERT(VARCHAR,CONVERT(FLOAT,ISNULL(ValueHi,0))) + ''')' 
                            ELSE '' -- 替换原有的''''为'',避免添加多余单引号
                        END 
                    ELSE 
                        WOtask.TaskAction + 
                        CASE 
                            WHEN CONVERT(varchar, ValueLow) IS NOT NULL AND CONVERT(varchar, ValueHi) IS NOT NULL AND Spec = 1 THEN 
                                ' (Range: ''' + CONVERT(VARCHAR,CONVERT(FLOAT,ISNULL(ValueLow,0))) + ''' - ''' + CONVERT(VARCHAR,CONVERT(FLOAT,ISNULL(ValueHi,0))) + ''')' 
                            ELSE '' -- 替换原有的''''为'',避免添加多余单引号
                        END 
                END, 
    Rate, 
    Measurement, 
    Initials, 
    Fail, 
    Complete, 
    Header, 
    LineStyle, 
    WOtask.Comments, 
    WOtask.NotApplicable, 
    WOTask.Photo1, 
    WOTask.Photo2 
FROM WOtask WITH (NOLOCK) 
LEFT OUTER JOIN Asset WITH (NOLOCK) ON Asset.AssetPK = WOTask.AssetPK 
LEFT OUTER JOIN AssetSpecification ON AssetSpecification.PK = WOTask.AssetSpecificationPK 
WHERE (WOPK IN (SELECT WOPK FROM WO WITH (NOLOCK) 
                LEFT OUTER JOIN Asset WITH (NOLOCK) ON Asset.AssetPK = WO.AssetPK 
                LEFT OUTER JOIN AssetHierarchy WITH (NOLOCK) ON AssetHierarchy.AssetPK = WO.AssetPK 
                WHERE WO.WOPK = 10109) ) 
ORDER BY WOPK, TaskNo

额外优化说明

原脚本中范围说明的拼接最后少了一个单引号(+ )'),我已经修正为+ ''')',这样范围的格式会更规范(比如显示为(Range: '5 - 10')),避免出现格式异常。

内容的提问来源于stack exchange,提问作者supriyo ray

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:15:57