Table

如何從我的 SQL 表中的值中刪除多餘的空格?

  • July 7, 2016

對 SQL 來說還是有點新。

我的問題是這樣的,假設我在 nchar(200) 處創建了一個包含其中一個列的表。此列包含值“已登錄”。每次我從前端呼叫它時,它都會返回“登錄”。有什麼辦法可以去掉表格中的空白?或者是否有一些設置可以刪除這些多餘的空白?我希望它返回“登錄”。只要。L/Rtrim 似乎不起作用。

謝謝

您應該做的第一件事是將列的數據類型更改為nvarchar(200),

charnchar數據類型適用於或多或少固定長度的數據。您的範例表明您沒有處理固定長度的 200 個字元串。

目前,“登錄”字元串的每個實例佔用 400 個字節。儲存nvarchar需要 20 個字節(11 個作為 varchar)。

然後你可以RTRIM在一個UPDATE語句中去掉尾隨空格。

注意:在某些情況下,您可能會發現從頭開始創建新表實際上比上面的方法更好,因為插入可以最少地記錄,並且它不會複製一次數據然後修剪它。它還確保刪除的列不佔用空間。您可以使用 SSMS 表設計器為此生成腳本,然後將 a 添加RTRIM到結果中,如下所示。

SET XACT_ABORT ON;
BEGIN TRANSACTION

GO

CREATE TABLE dbo.Tmp_YourTable
 (
    /*Other columns*/
    YourColumn NVARCHAR(400) NULL
 )

GO

INSERT INTO dbo.Tmp_YourTable WITH (TABLOCKX)
           (YourColumn)
SELECT /*Other columns*/ 
      RTRIM(CONVERT(NVARCHAR(400), YourColumn))
FROM   dbo.YourTable WITH (HOLDLOCK TABLOCKX)

DROP TABLE dbo.YourTable

GO

EXECUTE sp_rename
 N'dbo.Tmp_YourTable',
 N'YourTable',
 'OBJECT'

GO

COMMIT 

引用自:https://dba.stackexchange.com/questions/143202