2

我试图在包含特定 unicode 空白字符的 oracle 数据库中查找 clob,但我不确定如何编写 select 语句。

尝试以下查询,但不确定这是否是正确的方法:

select * from mytable where my_clob like '%'|| n'0xEF' || '%'; 
4

2 回答 2

5

我不确定您要搜索什么字符,但我认为这是UNISTR您要查找的命令。此外,LIKE将隐式转换为VARCHAR2(我认为),因此您只搜索前 4000 个字符。试试这个来搜索不间断的空间:

SELECT * 
  FROM mytable
 WHERE dbms_lob.instr( my_clob, UNISTR( '\00A0' )) > 0;

https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions224.htm#SQLRF06154

于 2013-05-11T12:27:30.690 回答
3

如果您知道要查找的字符的字符代码,则可以使用CHR()构建表达式来查找特定代码;

SELECT * 
FROM mytable 
WHERE my_clob LIKE '%' || CHR(15052183) || '%';

一个用于测试的 SQLfiddle

于 2013-05-11T11:50:35.200 回答