Как я могу заменить конечные пробелы на 0 в SQL Server? - PullRequest
0 голосов
/ 21 июня 2011

Учитывая следующее - как я могу заменить конечные пробелы на 0 в SQL Server?

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

Ответы [ 2 ]

3 голосов
/ 21 июня 2011

Вы можете использовать разницу в LEN и DATALENGTH. LEN удаляет завершающие пробелы, DATALENGTH - нет. И REPLICATE примет параметр нулевой длины

SELECT
   RTRIM(TestField) + REPLICATE('0', DATALENGTH(TestField)-LEN(TestField))
FROM
   TestTable
1 голос
/ 21 июня 2011

как насчет этого:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...