人工创建行的sql查询

人工创建行的sql查询,sql,Sql,我有一段代码可以在各种数据库上运行。它只是运行一个可配置的sql查询,该查询返回许多行。从每一行中,我提取一些文本和数字来创建一个新对象。我们的最新客户已决定将所有文本编号组合放在数据库的一行中,即 text_1, num_1, text_2, num_2, text_3, num_3 有没有一个聪明的方法可以让我质疑这个问题 text_1,num_1 text_2,num_2 text_3,num_3 这样我就不必为这个客户机重新编码这个部分 编辑: (不同的数据库意味着不同的RD

我有一段代码可以在各种数据库上运行。它只是运行一个可配置的sql查询,该查询返回许多行。从每一行中,我提取一些文本和数字来创建一个新对象。我们的最新客户已决定将所有文本编号组合放在数据库的一行中,即

 text_1, num_1, text_2, num_2, text_3, num_3
有没有一个聪明的方法可以让我质疑这个问题

 text_1,num_1
 text_2,num_2
 text_3,num_3
这样我就不必为这个客户机重新编码这个部分

编辑: (不同的数据库意味着不同的RDBMS)
(逗号分隔表中的不同列)

您可以创建一个函数/SP,以按需要的方式返回结果集

SELECT
  CASE row.id WHEN 1 THEN field1
              WHEN 2 THEN field3
                     ELSE field5
  END                                        AS new_field_1,
  CASE row.id WHEN 1 THEN field2
              WHEN 2 THEN field4
                     ELSE field6
  END                                        AS new_field_2
FROM
  myTable
CROSS JOIN
  (SELECT 1 AS id UNION ALL SELECT 2 UNION ALL SELECT 3) AS row
这应该适用于大多数情况,但仍需要一些修改(例如在Oracle的联合中添加“FROM dual…”)

或者,将三个查询合并在一起

SELECT field1, field2 FROM myTable
UNION ALL
SELECT field3, field4 FROM myTable
UNION ALL
SELECT field5, field6 FROM myTable

每行是单个字符串,还是使用
来表示单独的字段?另外,当你说多种数据库时,你是说每种数据库都有不同的RDBMS吗?或者只是不同的物理实例,但都使用相同的RDBMS?@Dems-更新了问题以回答您的问题它必须在不同的RDBMS系统上运行,因此需要使用非常通用的SQL子集