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

Microsoft SQL Server字符串修剪及通过代码查询记录ID技术问题

关于SQL Server字符串修剪与查询问题的解决办法

嘿,我来帮你搞定这两个SQL Server的字符串处理问题!

1. 如何在Microsoft SQL Server中修剪字符串中的字符?

SQL Server提供了几个实用函数,按需选择使用:

  • LTRIM():仅移除字符串开头的所有空格
  • RTRIM():仅移除字符串结尾的所有空格
  • TRIM():默认移除字符串首尾的空格;还能指定要移除的自定义字符,比如 TRIM('!@#' FROM column_name) 会把字段首尾的!、@、#全部清除
  • 如果要处理换行、回车、制表符这类特殊空白字符,就得结合REPLACE()和字符的ASCII码——换行是CHAR(10),回车是CHAR(13),制表符是CHAR(9)

2. 解决查询带换行/冗余空格的Code字段匹配问题

你之前的查询没生效,核心问题有两个:

  • 你用了REPLACE(Code,'/n/r',''),但SQL Server不识别/n/r这种转义符,实际的回车换行是CHAR(13)(回车)+CHAR(10)(换行),所以这个替换根本没触达目标字符
  • 默认的TRIM()只处理普通空格,不会移除换行、回车这类特殊空白字符,所以即使字段里藏着换行,TRIM(Code)也不会把它清掉

给你两个可行的解决方案:

方案一:先替换特殊空白,再修剪剩余空格

把换行、回车、制表符全部替换为空,再用TRIM()处理首尾残留的空格:

SELECT * 
FROM Firms 
WHERE TRIM(
    REPLACE(
        REPLACE(
            REPLACE(Code, CHAR(13), ''), 
            CHAR(10), ''
        ), 
        CHAR(9), ''
    )
) = '302489977'

这里CHAR(13)对应回车、CHAR(10)对应换行、CHAR(9)对应制表符,先清掉这些特殊字符,再修剪空格,就能精准匹配目标值了。

方案二:用TRIM扩展语法一次性移除所有空白字符

SQL Server支持在TRIM()里指定要移除的字符集合,直接把所有可能的空白字符加进去,写法更简洁:

SELECT * 
FROM Firms 
WHERE TRIM(CHAR(9) + CHAR(10) + CHAR(13) + ' ' FROM Code) = '302489977'

这个语句会一次性移除字段首尾的制表符、换行、回车和空格,效果和方案一完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:11:31