要解决列表框的问题,请查看此链接: http: //www.lebans.com/List_Combo.htm
我坚信这种类型的调整应该在 UI 层进行,而不是与数据混合恢复。
但是为了回答你原来的问题,我创建了一个SQL Fiddle:
MS SQL Server 2008 架构设置:
CREATE TABLE dbo.some_numbers(n INT);
创建一些示例数据:
INSERT INTO dbo.some_numbers
SELECT CHECKSUM(NEWID())
FROM (VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1))X(x);
以下查询使用该OVER()
子句指定MAX()
要应用于所有行。包装结果的>
and<
仅用于说明目的,而不是解决方案所必需的。
查询 1:
SELECT '>'+
SPACE(MAX(LEN(CAST(n AS VARCHAR(MAX))))OVER()-LEN(CAST(n AS VARCHAR(MAX))))+
CAST(n AS VARCHAR(MAX))+
'<'
FROM dbo.some_numbers SN;
结果:
| COLUMN_0 |
|---------------|
| >-1486993739< |
| > 1620287540< |
| >-1451542215< |
| >-1257364471< |
| > -819471559< |
| >-1364318127< |
| >-1190313739< |
| > 1682890896< |
| >-1050938840< |
| > 484064148< |
这个查询做了一个直接的案例来显示差异:
查询 2:
SELECT '>'+CAST(n AS VARCHAR(MAX))+'<'
FROM dbo.some_numbers SN;
结果:
| COLUMN_0 |
|---------------|
| >-1486993739< |
| >1620287540< |
| >-1451542215< |
| >-1257364471< |
| >-819471559< |
| >-1364318127< |
| >-1190313739< |
| >1682890896< |
| >-1050938840< |
| >484064148< |
使用此查询,您仍然需要将显示字体更改为等宽字体,例如COURIER NEW
. 否则,正如您所注意到的,结果仍然是未对齐的。