Sybase 查询:如何对提取进行排序(按格式正确的列)
Sybase query: How can I sort the extraction (by well formed columns)
我在脚本中构建了一个 Sybase 查询 语句(使用 isql command/line)下面是代码:
我的脚本包含:
isql -U databasename_dba -P password <<EOF!
select customerid, notional, counterparty2 from table_1 inner join table_2
on id = id2
go
quit
EOF!
我明白了:
我的期望输出将是:
认为仅提取数据(不包括 headers)可能会修复输出。我在我的代码中添加了 -b
isql -U databasename_dba -P password -b <<EOF!
但输出没有太大变化
提前致谢
首先,您可以传入 -w 参数来指定行的宽度,这样您就不会跨行重叠(例如 -w2000)
isql 工具将 return 列宽取决于实际 table 列的宽度,因此,例如,如果您将其定义为数字 18 但仅使用 12 位数字,您仍然在输出中得到 18 个字符。您可以根据数据类型使用 rtrim(customerid)
,也可以使用 convert(varchar(12), customerid)
。我怀疑有人可能将其定义为 50 个字符或更多。您可以根据需要对每一列重复此操作。
您也可以考虑使用 sp_autoformat 看看是否有帮助 - http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc36273.1570/html/sprocs/BABHCBIG.htm
我在脚本中构建了一个 Sybase 查询 语句(使用 isql command/line)下面是代码:
我的脚本包含:
isql -U databasename_dba -P password <<EOF!
select customerid, notional, counterparty2 from table_1 inner join table_2
on id = id2
go
quit
EOF!
我明白了:
我的期望输出将是:
认为仅提取数据(不包括 headers)可能会修复输出。我在我的代码中添加了 -b
isql -U databasename_dba -P password -b <<EOF!
但输出没有太大变化
提前致谢
首先,您可以传入 -w 参数来指定行的宽度,这样您就不会跨行重叠(例如 -w2000)
isql 工具将 return 列宽取决于实际 table 列的宽度,因此,例如,如果您将其定义为数字 18 但仅使用 12 位数字,您仍然在输出中得到 18 个字符。您可以根据数据类型使用 rtrim(customerid)
,也可以使用 convert(varchar(12), customerid)
。我怀疑有人可能将其定义为 50 个字符或更多。您可以根据需要对每一列重复此操作。
您也可以考虑使用 sp_autoformat 看看是否有帮助 - http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc36273.1570/html/sprocs/BABHCBIG.htm