SQL:如何将字符串中分隔符'-'左侧内容替换为空格
解决SQL中替换分隔符左侧内容为空格的问题
你原本使用REPLACE的思路存在问题,因为REPLACE只能替换固定字符串,而这里需要根据分隔符的位置动态处理左侧内容。以下是针对不同数据库的可行方案:
SQL Server 版本
UPDATE MyTable SET ColumnOne = CASE -- 检查是否存在目标分隔符' - ' WHEN CHARINDEX(' - ', ColumnOne) > 0 THEN -- 生成与分隔符及左侧内容等长的空格,拼接分隔符右侧内容 REPLICATE(' ', CHARINDEX(' - ', ColumnOne) + 2) + SUBSTRING(ColumnOne, CHARINDEX(' - ', ColumnOne) + 3, LEN(ColumnOne)) ELSE -- 无分隔符的行保持原内容 ColumnOne END
MySQL 版本
UPDATE MyTable SET ColumnOne = CASE WHEN LOCATE(' - ', ColumnOne) > 0 THEN REPEAT(' ', LOCATE(' - ', ColumnOne) + 2) + SUBSTRING(ColumnOne, LOCATE(' - ', ColumnOne) + 3) ELSE ColumnOne END
逻辑说明
- 用
CHARINDEX(SQL Server)或LOCATE(MySQL)定位分隔符' - '的起始位置 - 若存在分隔符,用
REPLICATE/REPEAT生成与「左侧内容+分隔符」等长的空格 - 截取分隔符右侧的内容,拼接到空格后方
- 没有分隔符的行直接保留原内容
处理后完全匹配你想要的效果:无分隔符的行不变,带分隔符的行左侧内容和分隔符被替换为等长空格,仅保留右侧内容;若分隔符后无内容,则整行变为对应长度的空格。
内容的提问来源于stack exchange,提问作者MidTown
相关产品推荐
相关产品推荐

