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

SQL Server 2012中如何截取varchar字符串前15个字符?

嘿,我来帮你搞定这个SQL问题!

首先得说清楚你报错的原因:SQL Server 2012里并没有TRIM()这个内置函数,它是从SQL Server 2017版本才开始支持的。另外,你用的SUBSTR()和LENGTH()也不是SQL Server的标准函数,对应的正确函数是SUBSTRING()和LEN()。

针对你的需求,我给你两种解决方案:

方案1:直接取前15个字符(确定字段长度≥15时用)

如果能保证MarketIdentifier的长度都在15个字符以上,直接用这个最简单的写法就行,同时用LTRIM(RTRIM())替代TRIM()来去除字符串前后的空格:

SELECT SUBSTRING(LTRIM(RTRIM(MarketIdentifier)), 1, 15) AS MarketID
FROM Markets;

要是你的字段本身没有前后空格,还可以简化掉LTRIM(RTRIM()):

SELECT SUBSTRING(MarketIdentifier, 1, 15) AS MarketID
FROM Markets;

方案2:通用去除最后5个字符(兼容长度不足的情况)

如果有些MarketIdentifier的长度可能不足20个字符,不想因为长度不够报错的话,可以用CASE语句做个判断,确保不会出现负数的截取长度:

SELECT 
    CASE 
        WHEN LEN(LTRIM(RTRIM(MarketIdentifier))) > 5 THEN 
            SUBSTRING(LTRIM(RTRIM(MarketIdentifier)), 1, LEN(LTRIM(RTRIM(MarketIdentifier))) - 5)
        ELSE 
            LTRIM(RTRIM(MarketIdentifier)) -- 长度≤5时返回整个处理后的字符串
    END AS MarketID
FROM Markets;

同样,不需要处理空格的话可以去掉LTRIM(RTRIM()):

SELECT 
    CASE 
        WHEN LEN(MarketIdentifier) > 5 THEN 
            SUBSTRING(MarketIdentifier, 1, LEN(MarketIdentifier) - 5)
        ELSE 
            MarketIdentifier
    END AS MarketID
FROM Markets;

这样就能完美满足你的需求啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:19:06