Xóa không gian lưu trữ và cập nhật trong các cột trong SQL Server


147

Tôi có dấu cách trong một cột trong bảng SQL Server được gọi Company Name.

Tất cả dữ liệu trong cột này có dấu cách.

Tôi muốn xóa tất cả những thứ đó và tôi muốn có dữ liệu mà không có bất kỳ dấu cách nào.

Tên công ty giống như "Amit Tech Corp "

Tôi muốn tên công ty là "Amit Tech Corp"

Câu trả lời:


296

Thử SELECT LTRIM(RTRIM('Amit Tech Corp '))

LTRIM - loại bỏ bất kỳ khoảng trắng hàng đầu nào từ phía bên trái của chuỗi

RTRIM - loại bỏ bất kỳ khoảng trắng từ bên phải

Ví dụ:

update table set CompanyName = LTRIM(RTRIM(CompanyName))

12
Cần lưu ý rằng TRIM hiện là phương thức được hỗ trợ trong SQL Server 2017+.
DJ Sipe

3
Tôi đang sử dụng SQL Management Studio v17.8.1 và trong khi tôi nhận được Intellisense cho hàm TRIM, khi tôi thực thi nó, nó nói rằng nó không hợp lệ. Tôi đã phải sử dụng mã ở trên. Kỳ dị.
DesertFoxAZ

2
@DesertFoxAZ Phiên bản SQL Management Studio không phải là phiên bản của SQL Server
Jonatan Dragon

30

Để chỉ cắt không gian dấu, bạn nên sử dụng

UPDATE
    TableName
SET
    ColumnName = RTRIM(ColumnName)

Tuy nhiên, nếu bạn muốn cắt tất cả các khoảng trắng ở đầu và cuối thì hãy sử dụng cái này

UPDATE
    TableName
SET
    ColumnName = LTRIM(RTRIM(ColumnName))

15

Vâng, đây là một kịch bản hay để TRIM tất cả các cột varchar trên một bảng một cách linh hoạt:

--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


2

Sử dụng hàm SQL TRIM .

Nếu bạn đang sử dụng SQL Server, hãy thử:

SELECT LTRIM(RTRIM(YourColumn)) FROM YourTable

2

SQL Server không hỗ trợ chức năng Trim ().

Nhưng bạn có thể sử dụng LTRIM () để xóa các khoảng trắng hàng đầu và RTRIM () để xóa các khoảng trắng ở cuối.

có thể sử dụng nó làm LTRIM (RTRIM (Cột Tên)) để xóa cả hai.

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

2

Nếu bạn đang sử dụng SQL Server (bắt đầu với vNext) hoặc Azure SQL Database thì bạn có thể sử dụng truy vấn bên dưới.

SELECT TRIM(ColumnName) from TableName;

Đối với Cơ sở dữ liệu SQL SERVER khác, bạn có thể sử dụng truy vấn bên dưới.

SELECT LTRIM(RTRIM(ColumnName)) from TableName

LTRIM - Loại bỏ khoảng trắng từ bên trái

ví dụ: select LTRIM(' test ') as trim='test '

RTRIM - Loại bỏ khoảng trắng từ bên phải

ví dụ: select RTRIM(' test ') as trim=' test'




0

Thí dụ:

SELECT TRIM('   Sample   ');

Kết quả: 'Sample'

UPDATE TableName SET ColumnName = TRIM(ColumnName)

3
SQL Server không hỗ trợ chức năng Trim (). Nhưng bạn có thể sử dụng LTRIM () và RTRIM (). Nếu bạn muốn sử dụng cả hai cùng nhau, bạn có thể sử dụng LTRIM (RTRIM (
Cột Tên

Đây là một truy vấn của Oracle, OP đang sử dụng Microsoft SQL Server
Wouter

0
SELECT TRIM(ColumnName) FROM dual;

1
Đây là một truy vấn của Oracle, OP đang sử dụng Microsoft SQL Server
Wouter

0

Để xóa Enter :

Update [table_name] set
[column_name]=Replace(REPLACE([column_name],CHAR(13),''),CHAR(10),'')

Để xóa Tab :

Update [table_name] set
[column_name]=REPLACE([column_name],CHAR(9),'')

0

Nếu chúng tôi cũng muốn xử lý các khoảng trắng và các tab không mong muốn-

Kiểm tra và thử tập lệnh bên dưới ( Đơn vị đã kiểm tra ) -

--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;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.