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

SQL中将多个特殊字符替换为单个短横线的实现问题

解决SQL中特殊字符替换为单个短横线的问题

我懂你的困扰——现在的代码会把多个特殊字符、空格转换成一串连续的短横线,完全不是你想要的单个分隔效果。咱们来调整代码,实现所有特殊字符(包括空格、&、/等)统一替换为单个短横线,同时清理掉首尾的多余横线。

改进后的SQL代码

DECLARE @str VARCHAR(400)
DECLARE @specialchars VARCHAR(50) = '%[/,~,@,#,$,%,&,*,(,),.,!^?: ]%' -- 把空格纳入特殊字符范围

-- 可切换测试不同输入示例
SET @str = '(SCARF.) / (WRAPS)'
-- SET @str = 'SKIN CARE & BEAUTY SUPPLY'
-- SET @str = 'BANDANAS / DURAGS / WRAPS'
-- SET @str = 'HATS & MUFFLERS'

-- 1. 将所有特殊字符(含空格)替换为短横线
WHILE PATINDEX(@specialchars, @str) > 0
    SET @str = REPLACE(@str, SUBSTRING(@str, PATINDEX(@specialchars, @str), 1), '-')

-- 2. 把连续的多个短横线合并为单个
WHILE CHARINDEX('--', @str) > 0
    SET @str = REPLACE(@str, '--', '-')

-- 3. 移除首尾的短横线
IF LEFT(@str, 1) = '-'
    SET @str = RIGHT(@str, LEN(@str) - 1)
IF RIGHT(@str, 1) = '-'
    SET @str = LEFT(@str, LEN(@str) - 1)

SELECT @str AS ConvertedResult

代码说明

  1. 统一替换特殊字符:把空格加入到@specialchars集合中,无需单独处理空格,所有需要替换的字符都会先转为-。
  2. 合并连续短横线:通过循环把--替换成-,直到字符串中没有连续短横线为止,彻底解决你之前遇到的SCARF-----WRAPS这类多横线问题。
  3. 清理首尾横线:确保最终结果的开头和结尾不会残留多余的短横线,输出格式更干净。

测试结果

  • 输入(SCARF.) / (WRAPS) → 输出SCARF-WRAPS
  • 输入SKIN CARE & BEAUTY SUPPLY → 输出SKIN-CARE-BEAUTY-SUPPLY
  • 输入BANDANAS / DURAGS / WRAPS → 输出BANDANAS-DURAGS-WRAPS
  • 输入HATS & MUFFLERS → 输出HATS-MUFFLERS

所有示例都能得到你期望的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:25:37