在select语句中使用CLOB进行分组

时间:2013-09-03 09:24:34

标签: sql oracle

我的选择语句如下:

Select column1, column2
From Table1
Group By column2

column1是一个CLOB,我想接收一个属于一个组的值。我知道他们都是一样的,所以我得到哪一个并不重要。我尝试了MINMAX等函数,但它们不接受CLOB作为类型。

要明确我不想聚合CLOB只选择其中一个。

这是实际select语句的简化,并且GROUP-BY子句是必需的。

所以这个数据:

column1       column2
qwerty          1
qwerty          1
asdfgh          2
asdfgh          2

我想得到:

qwerty          1
asdfgh          2

知道如何做到这一点?

3 个答案:

答案 0 :(得分:6)

CLOB值不能用于分组或distinct子句内。

您唯一的机会是将CLOB转换为varchar,但这意味着您无法比较列的完整内容(注意:那些是,而不是行)。如果您确定所有CLOB值都小于8000字节,则可以使用以下内容:

select min(dbms_lob.substr(column1)), column2
from foo
group by column2;

答案 1 :(得分:0)

您可以使用子查询。 添加唯一列ID,然后:

SELECT t1.col2,t2.col1
  FROM 
      (SELECT max(ID) as IDM, col2 FROM Table1 GROUP BY col2) t1 
  LEFT JOIN 
      Table1 t2
      ON t1.IDM=t2.ID

答案 2 :(得分:-1)

尝试这样的事情:

SELECT DISTINCT row1, row2 FROM Table1;