首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SQL Union (Oracle)中组合字符和非字符值

如何在SQL Union (Oracle)中组合字符和非字符值
EN

Stack Overflow用户
提问于 2016-01-25 11:26:42
回答 2查看 1.3K关注 0票数 0

我希望在SQL结果中打印一行,它表示列标题。列标题仅为VARCHAR值。现在我遇到了问题,获取以下错误消息:"ORA-01790:表达式必须具有与相应表达式相同的数据类型“:

代码语言:javascript
运行
复制
SELECT * 
FROM
(
    SELECT 'MyFirstString', 
           'MySecondString',
           'MyThirdString'
     FROM DUAL
                           )

UNION 

(
    SELECT firstCol,   // contains number
           secondCol,  // contains DATE
           thirdCol    // contains VARCHAR2
                                               )       

我怎样才能解决这个问题。需要额外的列标题,因为我必须将数据导出到另一个文件中(例如CSV,PDF.)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-25 11:30:48

使用to_char浇铸

代码语言:javascript
运行
复制
SELECT * 
FROM
(
    SELECT 'MyFirstString', 
           'MySecondString',
           'MyThirdString'
     FROM DUAL
                           )

UNION 

(
    SELECT to_char(firstCol),   // contains number
           to_char(secondCol),  // contains DATE
           thirdCol    // contains VARCHAR2(no need cast here since its already string)
                                           ) 

稍后,您可能需要将它转换回原来的样子,这取决于您想用它做什么。

对于日期,您可以使用to_date,号码to_decimal\to_number等。

票数 1
EN

Stack Overflow用户

发布于 2016-01-25 11:29:24

您可以尝试这样做,并导出带有标头的表。

代码语言:javascript
运行
复制
SELECT firstCol as 'MyFirstString',   // contains number
       secondCol as 'MySecondString',  // contains DATE
       thirdCol as 'MyThirdString'   // contains VARCHAR2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34991454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档