2011-06-21 44 views
0

鑑於以下情況 - 如何在SQL Server中將尾隨空格替換爲0?如何在SQL Server中用0替換尾隨空格?

CREATE TABLE TestTable 
(
    TestField CHAR(8) 
) 

INSERT INTO TestTable 
SELECT ' 1 1 1 ' 
INSERT INTO TestTable 
SELECT ' 1 1 1 1' 

SELECT 
TestField, 
LEN(TestField) AS LenTestField, 
REPLACE(TestField, ' ', '0') AS TestFieldReplaced, 
LEN(REPLACE(TestField, ' ', '0')) AS LenTestFieldReplaced, 
REPLACE(TestField, ' ', '0') + REPLICATE('0', DATALENGTH(TestField)-LEN(TestField)), 
REPLACE(CONVERT(VARCHAR,TestField), ' ', '0') 
FROM TestTable 
+0

我更新這包括從接受的答案爲例,使用複製如下所示。 – Brandon

+0

顯然轉換爲varchar也適用。 – Brandon

回答

3

您可以利用LEN和DATALENGTH的區別。 LEN刪除尾隨空格,DATALENGTH不會。和複製將採取零長度參數

SELECT 
    RTRIM(TestField) + REPLICATE('0', DATALENGTH(TestField)-LEN(TestField)) 
FROM 
    TestTable 
+0

正是我在找的東西。謝謝! – Brandon

1

這個怎麼樣:

DECLARE @test TABLE 
(num nvarchar(30)) 

INSERT INTO @test (num) VALUES ('1 1 1 ') 

SELECT LEFT(num, LEN(num)) + REPLICATE('0', LEN(REPLACE(num, ' ', '*')) - LEN(num)) FROM @test 
+0

@gbn打敗了我,它也更優雅一些。 – devin