输出应该永远是这样的形式:XX.XX.XXXX
强制三位数成两个最终会坏我猜想,但如果这些都要求:
Declare @YourTable table (s varchar(25))
Insert Into @YourTable values
('13.0.1221.00'),
('11.00.1111'),
('189.256.0000001'),
('7'),
('.19.'),
('13.4.'),
('..11'),
('A..B'),
(null),
('......')
;WITH rs AS (SELECT s, REVERSE('0' + s) AS rs FROM @YourTable)
SELECT REVERSE(LEFT(ISNULL(PARSENAME(rs, 3), '') + '0000', 4) + '.' +
LEFT(ISNULL(PARSENAME(rs, 2), '') + '00' , 2) + '.' +
LEFT(ISNULL(PARSENAME(rs, 1), '') + '00' , 2)), s
FROM rs
结果:
13.00.1221 13.0.1221.00
11.00.1111 11.00.1111
89.56.0001 189.256.0000001
07.00.0000 7
00.19.0000 .19.
13.04.0000 13.4.
00.00.0011 ..11
0A.00.000B A..B
00.00.0000 NULL
00.00.0000 ......
你能发表您的查询吗?它出什么问题了? –
你正在修整,填充,并可能需要别的东西。这应该在应用程序端恕我直言。 – scsimon
你可以在列中显示更多可能的值吗? –