我有一个列长度必须为6位数的列。我想弄清楚的问题是: 如果列包含任何空格或0或只是一个空格,那么我需要从查询结果中排除该记录:
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
答案 0 :(得分: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个字符长。