Table
如何從我的 SQL 表中的值中刪除多餘的空格?
對 SQL 來說還是有點新。
我的問題是這樣的,假設我在 nchar(200) 處創建了一個包含其中一個列的表。此列包含值“已登錄”。每次我從前端呼叫它時,它都會返回“登錄”。有什麼辦法可以去掉表格中的空白?或者是否有一些設置可以刪除這些多餘的空白?我希望它返回“登錄”。只要。L/Rtrim 似乎不起作用。
謝謝
您應該做的第一件事是將列的數據類型更改為
nvarchar(200)
,
char
和nchar
數據類型適用於或多或少固定長度的數據。您的範例表明您沒有處理固定長度的 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