समस्या regexp_substr
समारोह से लेकिन अपने स्तंभ डेटा प्रकार से नहीं आती है:
SQL> CREATE TABLE t (data_column CLOB);
Table created
SQL> INSERT INTO t VALUES ('123123,12,123123');
1 row inserted
SQL> INSERT INTO t VALUES ('123124,12,123123');
1 row inserted
SQL> INSERT INTO t VALUES ('123125,11,123123');
1 row inserted
SQL> SELECT regexp_substr(data_column,'[^,]+',1,2) FROM t;
REGEXP_SUBSTR(DATA_COLUMN,'[^,
--------------------------------------------------------------------------------
12
12
11
यहां आप देख समारोह सही ढंग से कार्य है कि, हालांकि ओरेकल (10.2 के साथ परीक्षण) आप की अनुमति नहीं है एक CLOB स्तंभ के साथ समूह:
SQL> select count(*) from t group by data_column;
select count(*) from t group by data_column
ORA-00932: inconsistent datatypes: expected - got CLOB
आप एक VARCHAR2 को समारोह उत्पादन में बदल सकते हैं द्वारा समूह के प्रदर्शन करने के लिए:
SQL> SELECT dbms_lob.substr(regexp_substr(data_column,'[^,]+',1,2), 4000),
2 COUNT(*)
3 FROM t
4 GROUP BY dbms_lob.substr(regexp_substr(data_column,'[^,]+',1,2), 4000);
DBMS_LOB.SUBSTR(REGEXP_SUBSTR( COUNT(*)
------------------------------- ----------
12 2
11 1
स्रोत
2011-01-27 11:45:26