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

SQL Server如何TRIM字段首尾*特殊字符并正确执行UPDATE更新

问题原因

语句报错核心是TRIM函数的语法和当前数据库类型不匹配:

  • 从[dbo].[表名]的命名格式可以判断你用的是SQL Server数据库,SQL Server中TRIM函数如果要指定首尾移除的自定义字符,必须使用TRIM(待移除字符集合 FROM 字符串/字段)的格式,不支持逗号分隔两个参数的传参方式——逗号传参是MySQL数据库的TRIM语法,放到SQL Server里会直接触发语法错误。
  • 你在W3School查到的SELECT TRIM('*' FROM '***SOLD W/MATCHING TRAILER***')就是SQL Server的正确语法,直接把这个逻辑套到UPDATE的SET赋值里即可。
正确实现语句

适用SQL Server 2017及以上版本(支持TRIM自定义移除字符)

执行更新前建议先查询验证处理结果,避免误改数据:

-- 先预览裁剪结果
SELECT 
    CONDITIONDESCRIPTION AS OriginalValue,
    TRIM('*' FROM CONDITIONDESCRIPTION) AS TrimmedValue
FROM [dbo].[Auct_Car]
-- 仅筛选首尾带*的记录,减少不必要的全表扫描
WHERE CONDITIONDESCRIPTION LIKE '*%' OR CONDITIONDESCRIPTION LIKE '%*';

确认结果符合预期后,执行更新语句:

UPDATE [dbo].[Auct_Car]
SET CONDITIONDESCRIPTION = TRIM('*' FROM CONDITIONDESCRIPTION)
WHERE CONDITIONDESCRIPTION LIKE '*%' OR CONDITIONDESCRIPTION LIKE '%*';

增加WHERE条件是为了只处理首尾确实带*的行,避免无意义的全表更新,也能减少操作时的锁表影响范围。

兼容SQL Server 2016及更早低版本(TRIM仅支持移除空格)

低版本SQL Server的原生TRIM函数默认只能移除首尾空格,要移除首尾*需要通过字符串位置匹配+截取实现,参考写法:

UPDATE [dbo].[Auct_Car]
SET CONDITIONDESCRIPTION = SUBSTRING(
    CONDITIONDESCRIPTION,
    PATINDEX('%[^*]%', CONDITIONDESCRIPTION),
    LEN(CONDITIONDESCRIPTION) - PATINDEX('%[^*]%', CONDITIONDESCRIPTION) - PATINDEX('%[^*]%', REVERSE(CONDITIONDESCRIPTION)) + 2
)
WHERE CONDITIONDESCRIPTION LIKE '*%' OR CONDITIONDESCRIPTION LIKE '%*';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:15:19