Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-组合两个字符串,使第二个字符串始终右对齐_Sql_String_Sql Server 2008_Alignment - Fatal编程技术网

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% 任何帮助都将不胜感激 谢谢

我目前正试图在组合两列时通过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
对上述行的查询结果将是:

           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