我目前正试图在合并两列时通过SQL查询实现对齐。
我当前的数据集看起来像:
Col1 Col2
usd US Dollar
cad Canadian Dollar
mxn Mexican Peso
我想组合col1+col2,但无论col2中有多少个字符,从col1中出来的数据都需要始终在显示中向右对齐。
显示限制为49个字符。Col2没有特定的限制,因为它是一个描述列,而col1是一个百分比列,所以它最多有7个字符:100.00%
任何帮助都将不胜感激。
感谢
如果我很好地理解你的问题,并且假设col1
的最大长度为7个字符,而col2
的长度是不确定的,那么下面的查询应该会给你所需的结果:
SELECT
ISNULL(myTable.col1, '')
+ (CASE WHEN LEN(ISNULL(myTable.col2, '')) < 49 - LEN(ISNULL(myTable.col1, ''))
THEN SPACE(49 - LEN(ISNULL(myTable.col1, '')) - LEN(ISNULL(myTable.col2, '')))
+ ISNULL(myTable.col2, '')
ELSE ' ' + LEFT(ISNULL(myTable.col2, ''),
49 - LEN(ISNULL(myTable.col1, '')) - 1)
END) AS cols_for_49chars_display
FROM
myTable
由于假定col1
的最大长度为7个字符,因此CASE
语句验证特定行的col2
的长度。
如果它低于49 - LEN(col1)
,请使用TSQL SPACE
函数(此处为文档)将col2
和49 - LEN(col1) - LEN(col2)
空格前置到右对齐col2
,然后添加col2
本身。
在相反的情况下,当1
是添加的单个空格字符的长度时,在col1
和左截col2
之后添加一个空格到49 - LEN(ISNULL(myTable.col1, '')) - 1
的长度。
查询的示例输入数据和结果:
让我们以答案中提供的数据为例,增加一行以显示当col2
值过长时会发生什么:
myTable
内容:
col1 col2
------------------------------------------------------------------------------------------------
usd US Dollar
cad PCanadian Dollar
mxn Mexican Peso
dummy Very long description of a "dummy" currency that in fact doesn't exist in the real world
对以上行的查询结果为:
cols_for_49chars_display
-------------------------------------------------
usd US Dollar
cad PCanadian Dollar
mxn Mexican Peso
dummy Very long description of a "dummy" currency
我希望它至少有一点帮助。