select '(''{' + cast(UniqueId as varchar(MAX)) + '}'',''' + [Name] + ''',''' + Address+ '''),'
from testTable;
以上查询给出了以下结果
('{C7F93C19-327E-47C1-B4A8-C397FF82D7C8}','name1','Address111'),
('{A686D54D-C742-4677-899A-AEFC39440615}','This is a long name','Address2'),
('{7DEF4222-1192-4DCA-934F-208D49FCE3E5}','This is a very loooooooooong name','Address 3'),
如何格式化结果以达到以下结果。通过在第二个coloumn之后保存一些空格来对齐第三个coloumn
('{C7F93C19-327E-47C1-B4A8-C397FF82D7C8}','name1', 'Address111'),
('{A686D54D-C742-4677-899A-AEFC39440615}','This is a long name', 'Address2'),
('{7DEF4222-1192-4DCA-934F-208D49FCE3E5}','This is a very loooooooooong name', 'Address 3'),
答案 0 :(得分:0)
这不是SQL的用途,即使它似乎有用。
SQL应提供原始数据,格式化是应用程序的任务。这可能是e。 G。一个PHP页面,将数据插入到HTML表或GUI应用程序中,用C ++,Java,C#编写,......适当地呈现数据。
所以你的查询看起来像这样:
SELECT cast(UniqueId as varchar(MAX)), [Name], Address FROM testTable
如果它是一个简单的C控制台应用程序,您可以迭代所有结果,获得每列的最大长度,然后输出数据,再次迭代它:
printf(
"%s, %-*s, %-*s\n",
currentId,
maxLenName, currentName,
maxLenAddress, currentAddress
);
编辑:您也可以查询长度:
SELECT MAX(CHAR_LENGTH([Name])), MAX(CHAR_LENGTH(Address)) FROM testTable
然后你只需要迭代数据一次。
答案 1 :(得分:0)
以下查询帮助我进行格式化
DECLARE @MaxKeyLength INT = (SELECT MAX(LEN([Name])) FROM testTable)
select '(''{' + cast(UniqueId as varchar(MAX)) + '}'',''' + LEFT(LTRIM([Name]) + ''', ', @MaxKeyLength + 4) + '''' + Address+ '''),'
from testTable;