oracle中對LONG列進行查詢
原文地址:http://oracle.chinaitlab.com/exploiture/834883.html
SQL> CREATE TABLE T_LONG (ID NUMBER, LONG_COL LONG);
表已建立。
SQL> INSERT INTO T_LONG VALUES (1, LPAD(1, 32767, 'HELLO WORLD!'));
已建立 1 行。
SQL> COMMIT;
提交完成。
SQL> SELECT * FROM T_LONG WHERE LONG_COL LIKE '%WORLD%'
2 ;
SELECT * FROM T_LONG WHERE LONG_COL LIKE '%WORLD%'
*第 1 行出現錯誤:
ORA-00932: 資料型別不一致: 應為 NUMBER, 但卻獲得 LONG
根據Oracle的建議,應該避免再使用LONG型別。如果可能應該使用TO_LOB來重建表,將表中的LONG型別轉化為CLOB或BLOB型別。
這裡就不考慮這種方法了,只是討論一下對於不能重建的表如何進行查詢。
如果表中的資料長度不超過32K的話,可以考慮通過類似下面的PL/SQL程式碼來實現:
SQL> SET SERVEROUT ON
SQL> BEGIN
2 FOR I IN (SELECT * FROM T_LONG) LOOP
3 IF INSTR(I.LONG_COL, 'WORLD') > 0 THEN
4 DBMS_OUTPUT.PUT_LINE(I.ID);
5 END IF;
6 END LOOP;
7 END;
8 /
1
PL/SQL 過程已成功完成。
不過PL/SQL程式碼只能處理不超過32K的資料,超過這個限制,就無法通過PL/SQL來處理。
好在Oracle的全文索引是支援LONG型別的,建立一個CONTEXT索引,使用全文索引的查詢語法就可以解決這個問題:
SQL> CREATE INDEX IND_T_LONG_COL ON T_LONG(LONG_COL) INDEXTYPE IS CTXSYS.CONTEXT;
索引已建立。
SQL> SELECT ID FROM T_LONG WHERE CONTAINS(LONG_COL, 'WORLD') > 0;
ID
----------
1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26524307/viewspace-1062011/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 查詢時LONG列追加資訊
- 在Oracle中進行大小寫不敏感的查詢Oracle
- ORDER對查詢結果進行排序排序
- 在Oracle中進行大小寫不敏感的查詢[zt]Oracle
- 對ORACLE的SGA 進行檢查Oracle
- 如何在Django ORM中進行not查詢?DjangoORM
- 對oracle asm 磁碟組進行檢查OracleASM
- 用於對執行慢的查詢進行優化優化
- python對solr進行查詢、插入操作(GET\POST)PythonSolr
- 如何抽取Oracle資料到文字文件進行查詢NAOracle
- oracle查詢語句查詢增加一列內容Oracle
- 用於對執行慢的查詢進行分析的清單
- 如何在word中進行查詢與替換 word文件中的替換與查詢功能
- /*列轉行查詢表資料*/
- 複合索引中前導列對sql查詢的影響索引SQL
- 使用oracle decode對錶字元列進行order by 排序Oracle字元排序
- 二維陣列中的查詢陣列
- 陣列中查詢給定值陣列
- Oracle中對兩個資料表交集的查詢(轉)Oracle
- ApacheSolr+PHP進行全文查詢ApacheSolrPHP
- 使用MDX進行環比查詢
- 業務需求:使用遊標對查詢出來的記錄進行更新過程中,不允許其它人進行更改
- 當查詢A表的時候,查詢還沒執行完,為什麼能夠對錶進行刪除?
- Java列舉-通過值查詢對應的列舉Java
- 通過SQL Server對上傳檔案內容進行查詢SQLServer
- jsp裡如何對建立的臨時表進行查詢?急!JS
- 【JZOF】二維陣列中的查詢陣列
- [Mysql 查詢語句]——對查詢結果進一步的操作MySql
- Oracle多列統計資訊與直方圖對有關聯多列查詢影響Oracle直方圖
- Oracle層次查詢中connect_by_iscycle偽列的取值研究Oracle
- 在C#中對列舉進行位運算--列舉組合C#
- xsl中,對xml文件查詢的結果再次查詢XML
- oracle查詢語句執行計劃中的表消除Oracle
- oracle表查詢的並行度Oracle並行
- oracle 查詢所有表的行數Oracle
- oracle 正在執行的物件查詢Oracle物件
- filter的pk進行多值查詢操作Filter
- Oracle並行操作——並行查詢(Parallel Query)Oracle並行Parallel