0
我有兩個表格說A
和B
(表B
是A
的前一個備份表)。它們都有相同的列,其中的一列(在兩個表中)都是LONG
數據類型。比較2長行Oracle Sql
Columns : ID and RECORD
我想比較兩個表(可能會或可能不會有相同的ID
),其結果應提供:
- 同
ID
但不同RECORD
和, - 同
RECORD
但不同ID
。
我有兩個表格說A
和B
(表B
是A
的前一個備份表)。它們都有相同的列,其中的一列(在兩個表中)都是LONG
數據類型。比較2長行Oracle Sql
Columns : ID and RECORD
我想比較兩個表(可能會或可能不會有相同的ID
),其結果應提供:
ID
但不同RECORD
和,RECORD
但不同ID
。在使用long之前,必須瞭解一些關於LONG的事實。
使用長值是受到以下限制:
1 A table can contain only one LONG column.
2 You cannot create an object type with a LONG attribute.
3 LONG columns cannot appear in WHERE clauses or in integrity constraints (except that they can appear in NULL and NOT NULL constraints).
4 LONG columns cannot be indexed.
5 LONG data cannot be specified in regular expressions.
6 A stored function cannot return a LONG value.
7 You can declare a variable or argument of a PL/SQL program unit using the LONG data type. However, you cannot then call the program unit from SQL.
8 Within a single SQL statement, all LONG columns, updated tables, and locked tables must be located on the same database.
9 LONG and LONG RAW columns cannot be used in distributed SQL statements and cannot be replicated.
10 If a table has both LONG and LOB columns, then you cannot bind more than 4000 bytes of data to both the LONG and LOB columns in the same SQL statement. However, you can bind more than 4000 bytes of data to either the LONG or the LOB column.
IN ADDITION, LONG COLUMNS CANNOT APPEAR IN THESE PARTS OF SQL STATEMENTS:
1 GROUP BY clauses, ORDER BY clauses, or CONNECT BY clauses or with the DISTINCT operator in SELECT statements
2 The UNIQUE operator of a SELECT statement
3 The column list of a CREATE CLUSTER statement
4 The CLUSTER clause of a CREATE MATERIALIZED VIEW statement
5 SQL built-in functions, expressions, or conditions
6 SELECT lists of queries containing GROUP BY clauses
7 SELECT lists of subqueries or queries combined by the UNION, INTERSECT, or MINUS set operators
8 SELECT lists of CREATE TABLE ... AS SELECT statements
9 ALTER TABLE ... MOVE statements
10 SELECT lists in subqueries in INSERT statements
變通方法爲你做任何對比的是創建具有長柱爲CLOB的景色,做任何操作。在下面檢查。
create table B(ID number, RECRD long)
create table A(ID number, RECRD long)
select recrd from A where recrd = '12345'
--This will throw error "illegal use of LONG datatype
WORK AROUND :
SQL> CREATE TABLE A_view
AS
SELECT id,
TO_LOB(recrd) AS recrd
FROM A;
SQL> CREATE TABLE B_view
AS
SELECT id,
TO_LOB(recrd) AS recrd
FROM B;
select * from A_view where DBMS_LOB.substr(recrd) = '12345'
drop table a;
drop table b;
drop table a_view;
drop table b_view;