SQL-组合两个字符串,使第二个字符串始终右对齐
我目前正试图在组合两列时通过SQL查询实现对齐 我当前的数据集看起来像:SQL-组合两个字符串,使第二个字符串始终右对齐,sql,string,sql-server-2008,alignment,Sql,String,Sql Server 2008,Alignment,我目前正试图在组合两列时通过SQL查询实现对齐 我当前的数据集看起来像: Col1 Col2 usd US Dollar cad Canadian Dollar mxn Mexican Peso 我想组合col1+col2,但是无论col2中有多少个字符,从col1中产生的数据都需要在显示中始终与右边对齐 显示限制为49个字符。Col2没有特定的限制,因为它是一个描述列,而col1是一个百分比列,所以它最多有7个字符:100.00% 任何帮助都将不胜感激 谢谢
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
对上述行的查询结果将是:
cols_for_49chars_display
-------------------------------------------------
usd US Dollar
cad PCanadian Dollar
mxn Mexican Peso
dummy Very long description of a "dummy" currency
我希望它至少有点帮助。在哪里显示?你用什么来显示它?我不明白。您的数据集在Col2中有大于7个字符的字符串,但是您首先说,“Col2是一个百分比列,所以它最多有7个字符:100.00%”,对此表示抱歉。我无意中替换了Col1和Col2中的解释和混淆的东西。Col1最多有7个字符Col2是可变的,因为它是一个描述列,试图使用select语句获取将被拉入excel的数据。问题是,我只能在数据进入Excel之前对其进行排列,因此,当我将两列数据合并为单个字符串时,我需要始终将百分比对齐在右侧。谢谢这可能是我需要的我会让你知道这是否管用,很抱歉我解释的方式很混乱——我刚刚意识到我把事情弄得一团糟:|嗨。所以我尝试了上面的方法,结果总是49个字符长,Col1总是向右,但是由于col2中的字符以及它们在屏幕上占据的实际空间,这不是一个完美的“视觉”对齐。尽管如此,我还是把答案标为正确的,因为在它的基础上,结果是正确的。再次感谢!没问题。我很高兴它至少帮了你一点忙。请在我的答案末尾找到编辑过的部分-这样的显示可以满足您的需要吗?我想在最多49个字符的情况下实现它是可能的。谢谢。我确实考虑到了这一点,因为这会更容易,但不幸的是,这取决于使用报告的客户,他们似乎没有灵活性。不过我很感激你的想法,没问题。谢谢您的回复:)
cols_for_49chars_display
-------------------------------------------------
usd US Dollar
cad PCanadian Dollar
mxn Mexican Peso
dummy Very long description of a "dummy" currency