查找列中char数据长度大于X的所有数据库记录

时间:2014-09-16 19:20:51

标签: sql oracle sqlplus

数据库: Oracle 11g

环境: Windows服务器。的SQLPlus。

我正在尝试查询列中char数据长度大于10K的所有记录。列数据类型为LONG(似乎已过时:http://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1830)。 定义为LONG的列可以存储包含最多2千兆字节信息的可变长度字符数据。 以下帖子在某种程度上解决了这个问题: Select something that has more/less than x character 我没有运气就按照说明进行操作。

我尝试过“长度”功能的一些变体,但仍然出现错误:

SQL> select * from tbl_name where LEN(notes) > 1;
select * from tbl_name where LEN(notes) > 1
                                     *
ERROR at line 1:
ORA-00904: "LEN": invalid identifier


SQL> select * from tbl_name where length(notes) > 1;
select * from tbl_name where length(notes) > 1
                                            *
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected NUMBER got LONG

提前致谢!

1 个答案:

答案 0 :(得分:1)

我建议你创建一个计算音符长度的函数,作为参数接收你的表id(我asumme tbl_name_id),如下所示:

CREATE OR REPLACE function get_length(val long) return number
is
res long;
begin
    select notes into res from tbl_name where val = tbl_name_id;
    return length(res);  
end;

然后你可以这样做:

select * from tbl_name where get_length(tbl_name_id) > 1

您还可以在此处查看http://www.techonthenet.com/oracle/questions/long_length.php