SQL Query返回逗号分隔的数据

时间:2014-11-27 10:18:57

标签: sql sql-server ms-query

我在ODBC连接上通过MS Query运行以下查询:

SELECT oa_cstexpbal_0.costcentre, oa_cstexpbal_0.expensecode, oa_cstexpbal_0.yearno,
oa_cstexpbal_0.baltype, oa_cstexpbal_0.openbal, oa_cstexpbal_0.periodbal
FROM OPENACC.PUB.oa_cstexpbal oa_cstexpbal_0
WHERE (oa_cstexpbal_0.yearno='2016') AND (oa_cstexpbal_0.baltype='AV')

并将以下数据返回到periodbal的一列:

406186.06;317084.39;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0

有没有办法可以将逗号数据分开来阻止它以逗号分隔出来?

我正在连接到sql 2008 Db调用OPENACC.PUB并使用原始查询来提取数据。使用;重新调整的唯一列是句点。当转储到excel时,可以通过Text To Columns进行更正,但理想情况下我想尝试在查询中执行此操作(如果可能)。

1 个答案:

答案 0 :(得分:0)

假设您使用MS SQL Server,您希望将列中以分号分隔的数据拆分为行,以便在SQL中处理它们。

如果这是正确的,那么你需要拆分它们。由于SQL服务器默认情况下无法执行此操作,因此您可以采用多种方式执行此操作。

有关一般信息,请参阅此帖子http://sqlperformance.com/2012/07/t-sql-queries/split-strings

这里https://codereview.stackexchange.com/questions/15125/sql-server-split-function-optimized我发布了一个split函数,它也适用于SQL。

所以一种方法可以是:

SELECT oa_cstexpbal_0.costcentre
  , oa_cstexpbal_0.expensecode
  , oa_cstexpbal_0.yearno
  , oa_cstexpbal_0.baltype
  , oa_cstexpbal_0.openbal
  , oa_cstexpbal_0.periodbal
  , s.value AS periodbal_as_rows
FROM OPENACC.PUB.oa_cstexpbal oa_cstexpbal_0
CROSS APPLY dbo.fn_Split(oa_cstexpbal_0.periodbal,';') AS s
WHERE (oa_cstexpbal_0.yearno='2016') AND (oa_cstexpbal_0.baltype='AV')