2014-02-10 2 views
1

У меня есть столбец, длина которого должна быть 6 цифр. Проблема, которую я пытаюсь выяснить это: , если столбец содержит какие-либо пробелы или 0s или просто пространство, то мне нужно, чтобы исключить эту запись из результата запроса:SQL Server удаляет записи, которые являются пробелами, нулями и заготовками

Column A 
964015 
00279R 
0 


25015 
0 
352 
8290 
0 

Результат должен быть:

Column A 
964015 
00279R 
C25015 
C00352 
C08290 

Я закодировал часть, где она меньше 6 цифр, но часть, где я исключаю 0, пробелы и пробелы, является местом, где я застреваю. Любые намеки приветствуются. Вот часть моего кода:

CREATE TABLE #Hello([Column A] varchar(6)) 
INSERT INTO #Hello VALUES('00279R') 
INSERT INTO #Hello VALUES('35269') 
INSERT INTO #Hello VALUES('0') 
INSERT INTO #Hello VALUES(' ') 
INSERT INTO #Hello VALUES('') 
INSERT INTO #Hello VALUES('352') 
INSERT INTO #Hello VALUES('8290') 


SELECT (Case When Len([Column A]) = 5 THEN 'C' + [Column A] 
     WHEN Len([Column A]) = 4 THEN 'C' + '0' + [Column A] 
     WHEN Len([Column A]) = 3 THEN 'C' + '00' + [Column A] 
     WHEN Len([Column A]) = 2 THEN 'C' + '000' + [Column A] 
     WHEN Len([Column A]) = 1 THEN 'C' + '0000' + [Column A] 
     WHEN Len([Column A]) = 0 THEN 'C' + '00000' + [Column A] 
     ELSE [Column A] END) 
     FROM #Hello 

ответ

1

Как о чем-то вроде этого:

SELECT CASE WHEN LEN([Column A]) = 6 THEN [Column A] 
    ELSE STUFF('C000000', 7 - LEN([Column A]), 6, [Column A]) 
    END 
FROM Hello 
WHERE RIGHT('000000' + ISNULL(LTRIM(RTRIM([Column A])), ''), 6) <> '000000' 

Это исключает пустые строки, а также те, которые просто 000000. Кроме того, все, что осталось, в конечном итоге будет дополнено слева нулями и будет иметь длину всего 6 символов.

Вот SQL Fiddle to prove it.

+0

Что такое магия SQL Server? Огромное спасибо. Работает отлично. очень признателен. – user3221917

+0

@ user3221917: Я рад, что могу помочь, и вот [документация MSDN по STUFF] (http://technet.microsoft.com/en-us/library/ms188043.aspx). –

Смежные вопросы