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

如何在SQL中移除文本字段内姓氏字母间的空格?

移除姓氏字母间的空格(SQL实现)

针对你筛选出的包含空格分隔大写字母姓氏(如'S M I T H')的文本,以下是不同SQL环境下的处理方法:

SQL Server(适配你的环境)

从你使用的[dbo].[my_table]可以判断是SQL Server环境,这里提供两种精准处理单引号内空格的方案:

方法1:递归CTE批量替换

通过递归查找并移除单引号内的字母间空格,一次性完成处理:

WITH RecursiveReplace AS (
    SELECT 
        [TEXT] AS OriginalText,
        PATINDEX('%''[A-Z] [A-Z]%''', [TEXT]) AS MatchPos,
        STUFF([TEXT], PATINDEX('%''[A-Z] [A-Z]%''', [TEXT]) + 2, 1, '') AS UpdatedText
    FROM [dbo].[my_table]
    WHERE [TEXT] LIKE '% [A-Z] [A-Z] [A-Z] [A-Z]%' -- 你的筛选条件

    UNION ALL

    SELECT 
        OriginalText,
        PATINDEX('%''[A-Z] [A-Z]%''', UpdatedText) AS MatchPos,
        STUFF(UpdatedText, PATINDEX('%''[A-Z] [A-Z]%''', UpdatedText) + 2, 1, '') AS UpdatedText
    FROM RecursiveReplace
    WHERE MatchPos > 0
)
SELECT DISTINCT OriginalText, UpdatedText
FROM RecursiveReplace
WHERE MatchPos = 0;

方法2:自定义函数(适合重复调用)

如果需要多次处理这类文本,先创建自定义函数:

CREATE FUNCTION dbo.RemoveSpacesInQuotedName(@inputText NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
AS
BEGIN
    WHILE PATINDEX('%''[A-Z] [A-Z]%''', @inputText) > 0
    BEGIN
        SET @inputText = STUFF(@inputText, PATINDEX('%''[A-Z] [A-Z]%''', @inputText) + 2, 1, '')
    END
    RETURN @inputText
END

再调用函数处理数据:

SELECT 
    [TEXT] AS OriginalText,
    dbo.RemoveSpacesInQuotedName([TEXT]) AS UpdatedText
FROM [dbo].[my_table]
WHERE [TEXT] LIKE '% [A-Z] [A-Z] [A-Z] [A-Z]%';

其他数据库参考

  • MySQL 8.0+:用REGEXP_REPLACE直接替换单引号内的空格:
SELECT 
    `TEXT` AS OriginalText,
    REGEXP_REPLACE(`TEXT`, '(\'[A-Z]) ([A-Z]\')', '$1$2') AS UpdatedText
FROM my_table
WHERE `TEXT` LIKE '% [A-Z] [A-Z] [A-Z] [A-Z]%';
  • PostgreSQL:通过全局正则替换处理:
SELECT 
    "TEXT" AS OriginalText,
    REGEXP_REPLACE("TEXT", '(\'[A-Z]) ([A-Z])', '\1\2', 'g') AS UpdatedText
FROM my_table
WHERE "TEXT" LIKE '% [A-Z] [A-Z] [A-Z] [A-Z]%';

注意

以上方案均只针对单引号内的空格分隔大写字母处理,不会误修改文本其他位置的空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:36:19