我在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进行更正,但理想情况下我想尝试在查询中执行此操作(如果可能)。
答案 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')