数据库: 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
提前致谢!
答案 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