我在名为Company Name
的SQL Server表的列中有尾随空格。
此列中的所有数据都有尾随空格。
我想删除所有这些,我希望数据没有任何尾随空格。
公司名称类似于"Amit Tech Corp "
我希望公司名称为"Amit Tech Corp"
答案 0 :(得分:256)
尝试
SELECT LTRIM(RTRIM('Amit Tech Corp '))
LTRIM
- 从字符串
RTRIM
- 从右侧删除任何空格
前:
update table set CompanyName = LTRIM(RTRIM(CompanyName))
答案 1 :(得分:27)
要修剪尾随空格,您应该使用
UPDATE
TableName
SET
ColumnName = RTRIM(ColumnName)
但是,如果要修剪所有前导和尾随空格,请使用此
UPDATE
TableName
SET
ColumnName = LTRIM(RTRIM(ColumnName))
答案 2 :(得分:14)
这里有一个很好的脚本来动态地TRIM表上的所有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
答案 3 :(得分:7)
update MyTable set CompanyName = rtrim(CompanyName)
答案 4 :(得分:2)
答案 5 :(得分:2)
如果您使用 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'
答案 6 :(得分:1)
嗯,这取决于您使用的SQL Server版本。
在SQL Server 2008 r2,2012和2014中,您只需使用TRIM(CompanyName)
在其他版本中,您必须使用set CompanyName = LTRIM(RTRIM(CompanyName))
答案 7 :(得分:1)
SQL Server不支持Trim()函数。
但您可以使用LTRIM()删除前导空格,使用RTRIM()删除尾随空格。
可以使用它作为LTRIM(RTRIM(ColumnName))来删除它们。
update tablename
set ColumnName= LTRIM(RTRIM(ColumnName))
答案 8 :(得分:1)
使用ETL从excel文件中提取数据后,我遇到了同样的问题 最后我在那里找到了解决方案:
https://www.codeproject.com/Tips/330787/LTRIM-RTRIM-doesn-t-always-work
希望它有所帮助;)
答案 9 :(得分:0)
SELECT TRIM(ColumnName) FROM dual;
答案 10 :(得分:0)
示例:
SELECT TRIM(' Sample ');
结果:'Sample'
UPDATE TableName SET ColumnName = TRIM(ColumnName)
答案 11 :(得分:0)
要删除输入:
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),'')
答案 12 :(得分:0)
如果我们还想处理空格和不需要的制表符-
检查并尝试以下脚本(已通过单元测试)-
--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;
答案 13 :(得分:-10)
删除所有空格的最佳方法是 SELECT REPLACE(“Amit Tech Corp”,'','')
而不是LTRIM&amp; RTRIM