Remove all spaces from a string in SQL Server

后端 未结 23 771
死守一世寂寞
死守一世寂寞 2020-11-28 01:42

What is the best way to remove all spaces from a string in SQL Server 2008?

LTRIM(RTRIM(\' a b \')) would remove all spaces at the right and left of th

相关标签:
23条回答
  • 2020-11-28 02:17

    Just in case you need to TRIM spaces in all columns, you could use this script to do it dynamically:

    --Just change table name
    declare @MyTable varchar(100)
    set @MyTable = 'MyTable'
    
    --temp table to get column names and a row id
    select column_name, ROW_NUMBER() OVER(ORDER BY column_name) as id into #tempcols from INFORMATION_SCHEMA.COLUMNS 
    WHERE   DATA_TYPE IN ('varchar', 'nvarchar') and TABLE_NAME = @MyTable
    
    declare @tri int
    select @tri = count(*) from #tempcols
    declare @i int
    select @i = 0
    declare @trimmer nvarchar(max)
    declare @comma varchar(1)
    set @comma = ', '
    
    --Build Update query
    select @trimmer = 'UPDATE [dbo].[' + @MyTable + '] SET '
    
    WHILE @i <= @tri 
    BEGIN
    
        IF (@i = @tri)
            BEGIN
            set @comma = ''
            END
        SELECT  @trimmer = @trimmer + CHAR(10)+ '[' + COLUMN_NAME + '] = LTRIM(RTRIM([' + COLUMN_NAME + ']))'+@comma
        FROM    #tempcols
        where id = @i
    
        select @i = @i+1
    END
    
    --execute the entire query
    EXEC sp_executesql @trimmer
    
    drop table #tempcols
    
    0 讨论(0)
  • 2020-11-28 02:17

    replace(replace(column_Name,CHAR(13),''),CHAR(10),'')

    0 讨论(0)
  • 2020-11-28 02:18

    I had this issue today and replace / trim did the trick..see below.

    update table_foo 
    set column_bar  = REPLACE(LTRIM(RTRIM(column_bar)), '  ', '')
    

    before and after :

    old-bad:  column_bar    |   New-fixed:   column_bar
           '  xyz  '        |                'xyz'   
           '  xyz  '        |                'xyz' 
           '  xyz  '        |                'xyz' 
           '  xyz  '        |                'xyz' 
           '  xyz  '        |                'xyz' 
           '  xyz  '        |                'xyz' 
    
    0 讨论(0)
  • To remove the spaces in a string left and right. To remove space in middle use Replace.

    You can use RTRIM() to remove spaces from the right and LTRIM() to remove spaces from the left hence left and right spaces removed as follows:

    SELECT * FROM table WHERE LTRIM(RTRIM(username)) = LTRIM(RTRIM("Bob alias baby"))
    
    0 讨论(0)
  • 2020-11-28 02:21

    A functional version (udf) that removes spaces, cr, lf, tabs or configurable.

    select Common.ufn_RemoveWhitespace(' 234   asdf   wefwef 3  x   ', default) as S
    

    Result: '234asdfwefwef3x'

    alter function Common.RemoveWhitespace
    (
        @pString nvarchar(max),
        @pWhitespaceCharsOpt nvarchar(max) = null -- default: tab, lf, cr, space 
    )  
    returns nvarchar(max) as
    /*--------------------------------------------------------------------------------------------------
        Purpose:   Compress whitespace
    
        Example:  select Common.ufn_RemoveWhitespace(' 234   asdf   wefwef 3  x   ', default) as s 
                  -- Result: 234asdfwefwef3x
    
        Modified    By          Description
        ----------  ----------- --------------------------------------------------------------------
        2018.07.24  crokusek    Initial Version 
      --------------------------------------------------------------------------------------------------*/ 
    begin    
        declare 
            @maxLen bigint = 1073741823, -- (2^31 - 1) / 2 (https://stackoverflow.com/a/4270085/538763)
            @whitespaceChars nvarchar(30) = coalesce(
                @pWhitespaceCharsOpt, 
                char(9) + char(10) + char(13) + char(32));  -- tab, lf, cr, space
    
        declare
            @whitespacePattern nvarchar(30) = '%[' + @whitespaceChars + ']%',
            @nonWhitespacePattern nvarchar(30) = '%[^' + @whitespaceChars + ']%',
            @previousString nvarchar(max) = '';
    
        while (@pString != @previousString)
        begin
            set @previousString = @pString;
    
            declare
                @whiteIndex int = patindex(@whitespacePattern, @pString);
    
            if (@whiteIndex > 0)
            begin                   
                declare 
                    @whitespaceLength int = nullif(patindex(@nonWhitespacePattern, substring(@pString, @whiteIndex, @maxLen)), 0) - 1;                
    
                set @pString = 
                    substring(@pString, 1, @whiteIndex - 1) + 
                    iif(@whiteSpaceLength > 0, substring(@pString, @whiteIndex + @whiteSpaceLength, @maxLen), '');
            end        
        end        
        return @pString;
    end
    go
    
    0 讨论(0)
提交回复
热议问题