8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 SQL Server 中删除尾随空格并更新列

ruud 2月前

192 0

我在 SQL Server 表中名为“公司名称”的列中有尾随空格。此列中的所有数据都有尾随空格。我想删除所有这些空格,并且我希望数据没有任何尾随空格......

我在 SQL Server 表中名为 Company Name .

此列中的所有数据均有尾随空格。

我想删除所有这些,并且我希望数据不带任何尾随空格。

公司名称就像 "Amit Tech Corp "

我希望公司名称为 "Amit Tech Corp"

帖子版权声明 1、本帖标题:在 SQL Server 中删除尾随空格并更新列
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由ruud在本站《sql-server》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 尝试 SELECT LTRIM(RTRIM('Amit Tech Corp '))

    LTRIM - 删除字符串左侧的所有前导空格

    RTRIM - 删除右侧的所有空格

    在 SQL Server 2017 或更高版本中:

    TRIM - 删除左右两侧的所有空格

    前任:

    update table set CompanyName = LTRIM(RTRIM(CompanyName))
    
  • 值得注意的是,TRIM 现在是 SQL Server 2017+ 中支持的方法。

  • 我正在使用 SQL Management Studio v17.8.1,虽然我获得了 TRIM 函数的 Intellisense,但当我执行它时,它说它无效。我不得不使用上面的代码。很奇怪。

  • @DesertFoxAZ SQL Management Studio 版本不是 SQL Server 版本

  • 要修剪尾随空格,您应该使用

    UPDATE
        TableName
    SET
        ColumnName = RTRIM(ColumnName)
    

    但是,如果你想要修剪所有前导和尾随空格,请使用此

    UPDATE
        TableName
    SET
        ColumnName = LTRIM(RTRIM(ColumnName))
    
  • SQL Server 不支持 Trim() 函数。

    但是您可以使用 LTRIM() 删除前导空格,使用 RTRIM() 删除尾随空格。

    可以将其用作 LTRIM(RTRIM(ColumnName)) 来删除两者。

    update tablename
    set ColumnName= LTRIM(RTRIM(ColumnName))
    

    更新:2022 年

    我 7 年前(2015 年)就回答过这个问题。当时 SQL Server 中还没有直接的修剪功能。

    但是从SQL Server 2017开始,他们引入了 Trim() 函数。

    因此,任何使用 SQL Server 2017 或更高版本的人都可以轻松地执行如下操作。

    update tablename
    set ColumnName= TRIM(ColumnName)
    

    不过如果你用的是老版本的话,你还是得用我7年前提到的方式。

  • 下面是一个不错的脚本,可以动态修剪表上的所有 varchar 列:

    --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
    
  • update MyTable set CompanyName = rtrim(CompanyName)
    
  • J4N 2月前 0 只看Ta
    引用 10

    使用 TRIM SQL 函数。

    如果您正在使用 SQL Server,请尝试:

    SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable
    
  • 引用 11

    如果您正在使用 SQL Server(从 vNext 开始) Azure SQL 数据库 ,那么您可以使用以下查询。

    SELECT TRIM(ColumnName) from TableName;
    

    对于其他 SQL SERVER 数据库, 您可以使用以下查询。

    SELECT LTRIM(RTRIM(ColumnName)) from TableName
    

    LTRIM - 删除左侧的空格

    例如: select LTRIM(' test ') as trim = 'test '

    RTRIM - 删除右侧的空格

    例如: select RTRIM(' test ') as trim = ' test'

  • 我使用 ETL 从 Excel 文件中提取数据后遇到了同样的问题,最后我找到了解决方案:

    https://www.codeproject.com/Tips/330787/LTRIM-RTRIM-doesn-t-always-work

    希望有帮助;)

  • 如果我们还想处理空格和不需要的制表符-

    检查并尝试以下脚本( 单元测试 )-

    --Declaring
    DECLARE @Tbl TABLE(col_1 VARCHAR(100));
    
    --Test Samples
    INSERT INTO @Tbl (col_1)
    VALUES
    ('  EY     y            
    Salem')
    , ('  EY     P    ort       Chennai   ')
    , ('  EY     Old           Park   ')
    , ('  EY   ')
    , ('  EY   ')
    ,(''),(null),('d                           
        f');
    
    SELECT col_1 AS INPUT,
        LTRIM(RTRIM(
        REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(
        REPLACE(
            REPLACE(
            REPLACE(
            REPLACE(
            REPLACE(
            REPLACE(
            REPLACE(col_1,CHAR(10),' ')
            ,CHAR(11),' ')
            ,CHAR(12),' ')
            ,CHAR(13),' ')
            ,CHAR(14),' ')
            ,CHAR(160),' ')
            ,CHAR(13)+CHAR(10),' ')
        ,CHAR(9),' ')
        ,' ',CHAR(17)+CHAR(18))
        ,CHAR(18)+CHAR(17),'')
        ,CHAR(17)+CHAR(18),' ')
        )) AS [OUTPUT]
    FROM @Tbl;
    
  • 引用 14

    嗯,这取决于您使用的 SQL Server 哪个版本。

    在 SQL Server 2008 r2、2012 和 2014 中,您可以简单地使用 TRIM(CompanyName)

    SQL Server TRIM 函数

    在其他版本中你必须使用 set CompanyName = LTRIM(RTRIM(CompanyName))

  • Trim 默认不可用,它是 DAX 功能:msdn.microsoft.com/en-us/library/gg413422.aspx

  • TRIM() 可从 SQL2017 learn.microsoft.com/en-us/sql/t-sql/functions/trim-transact-sql 获得(并且可以选择删除除 SPACE 之外的字符)

  • 引用 17

    例子:

    SELECT TRIM('   Sample   ');
    

    结果: 'Sample'

    UPDATE TableName SET ColumnName = TRIM(ColumnName)
    
  • SQL Server 不支持 Trim() 函数。但您可以使用 LTRIM() 和 RTRIM()。如果您想同时使用两者,可以使用 LTRIM(RTRIM(ColumnName))

  • 这是一个 Oracle 查询,OP 使用的是 Microsoft SQL Server

  • SELECT TRIM(ColumnName) FROM dual;
    
返回
作者最近主题: