Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除SQL Server中的尾随空格并在列中更新_Sql_Sql Server 2008_Trailing - Fatal编程技术网

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

删除SQL Server中的尾随空格并在列中更新,sql,sql-server-2008,trailing,Sql,Sql Server 2008,Trailing,SQL Server表中名为Company Name的列中有尾随空格 此列中的所有数据都有尾随空格 我想删除所有这些,我想让数据没有任何尾随空格 该公司的名称类似于阿米特科技公司 我希望公司名称为阿米特科技公司 选择LTRIMRTRIM'Amit Tech Corp' -删除字符串左侧的所有前导空格 -从右侧删除所有空格 例: 要仅修剪尾随空格,应使用 UPDATE TableName SET ColumnName = RTRIM(ColumnName) 但是,如果要修剪所有前

SQL Server表中名为Company Name的列中有尾随空格

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

我想删除所有这些,我想让数据没有任何尾随空格

该公司的名称类似于阿米特科技公司

我希望公司名称为阿米特科技公司 选择LTRIMRTRIM'Amit Tech Corp'

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

-从右侧删除所有空格

例:


要仅修剪尾随空格,应使用

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)
但是,如果要修剪所有前导空格和尾随空格,请使用此选项

UPDATE
    TableName
SET
    ColumnName = LTRIM(RTRIM(ColumnName))
使用SQL函数

如果您使用的是SQL Server,请尝试:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable

下面是一个很好的脚本,可以动态修剪表上的所有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

这取决于您使用的SQL Server版本

在SQL Server 2008 r2、2012和2014中,您只需使用TRIMCompanyName即可

在其他版本中,必须使用set CompanyName=LTRIMRTRIMCompanyName

示例:

SELECT TRIM('   Sample   ');
结果:“样本”


SQL Server不支持修剪功能

但可以使用LTRIM删除前导空格,使用RTRIM删除尾随空格

可以将其用作LTRIMRTRIMColumnName来删除这两个名称

update tablename
set ColumnName= LTRIM(RTRIM(ColumnName))
如果您使用的是从vNext或Azure SQL数据库开始的SQL Server,则可以使用以下查询

SELECT TRIM(ColumnName) from TableName;
SELECT LTRIM(RTRIM(ColumnName)) from TableName
对于其他SQL SERVER数据库,可以使用以下查询

SELECT TRIM(ColumnName) from TableName;
SELECT LTRIM(RTRIM(ColumnName)) from TableName
LTRIM-从左侧删除空格

示例:选择LTRIM'test'作为trim='test'

RTRIM-从右侧删除空格


示例:选择RTRIM'test'作为trim='test'

使用ETL从excel文件提取数据后,我遇到了相同的问题 最后我在那里找到了解决办法:

希望有帮助

要删除,请输入:

要删除选项卡,请执行以下操作:

如果我们还想处理空白和不需要的选项卡-

检查并尝试以下已测试的脚本单元-


SQL Server不支持修剪功能。但是您可以使用LTRIM和RTRIM。如果要同时使用这两者,可以使用ltrimrtrimcolumnname这是Oracle查询,OP使用的是Microsoft SQL Server这是Oracle查询,OP使用的是Microsoft SQL Server默认情况下不可用,这是一个DAX功能:TRIM可从SQL2017获得,并具有删除空格以外字符的选项。应该注意的是,这现在是SQL Server 2017+中支持的方法。我使用的是SQL Management Studio v17.8.1,虽然我获得了TRIM函数的Intellisense,但当我执行它时,它表示它无效。我必须使用上面的代码。奇怪的是,Foxaz SQL Management Studio版本不是SQL Server的版本
SELECT TRIM(ColumnName) from TableName;
SELECT LTRIM(RTRIM(ColumnName)) from TableName
Update [table_name] set
[column_name]=Replace(REPLACE([column_name],CHAR(13),''),CHAR(10),'')
Update [table_name] set
[column_name]=REPLACE([column_name],CHAR(9),'')
--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;