【问题标题】:in Oracle 9.2, how to compare LONG Type containing String text to a Column of VARCHAR2在 Oracle 9.2 中,如何将包含字符串文本的 LONG 类型与 VARCHAR2 的列进行比较
【发布时间】:2010-10-04 20:04:55
【问题描述】:

简单的q。 在Oracle 9.2 中,如何将包含字符串文本的LONG 类型与VARCHAR2 的列进行比较。

select * from table1 t1, table2 t2 where t1.long_value = t2.varchar2_value

我怎样才能以最简单的方式执行这样的查询?

【问题讨论】:

  • 那么,您编写的 SQL 到底有什么问题?
  • 这行不通。试试吧。它会引发“非法使用 long”错误。

标签: oracle string types


【解决方案1】:

简短的回答是你不能,直接。查看this 以了解将 long 转换为 varchar2 的函数,以便您可以在 SQL 语句中使用它。 LONG 麻烦多于它的价值,但有时你会被它困住。

【讨论】:

    【解决方案2】:

    嗯,如果没有 Oracle 可访问性,我猜你的问题在于转换为正确的类型。

    尝试(''||t1.long_value) = t2.varchar2_value 强制转换

    但这取决于您如何设置索引。如果您想利用 t1.long_value 上的索引,最好将 t2.varchar2_value 转换为某种东西

    【讨论】:

    • 我不知道为什么 Oracle 实现了一个没有内部函数来处理它的无用数据类型。您的尝试会产生直观的错误:ORA-00932:不一致的数据类型:预期的 NUMBER got LONG :-|
    • 这是一种遗留数据类型。但我同意你的看法,为什么没有更新系统表以反映现代数据类型。
    猜你喜欢
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多