逃脱“(”在N字符串oracle sql中

时间:2011-11-26 11:44:43

标签: sql oracle escaping

我试图理解为什么在oracle sql语句中的字符串中,我有这样的东西“%abc(Weiter%”我得不到结果,而如果我使用这个字符串“< em>%abc(%“我确实得到了结果。从我能看到的是”(W“是这里的问题。(存在”Weiter“的元素) 有谁知道接下来怎么办? 谢谢你的时间。

我不能给出确切的sql,但这是它的一部分:

// this brings nothing:
SELECT * FROM tabel_name where name = N'Sunny / Day (Weather)'

// this brings 1 result expected with column value "Sunny / Day (Weather)":
SELECT name FROM tabel_name where id = 3456 

// this brings 1 result with column value "Sunny / Day (Weather)":
SELECT * FROM tabel_name where name like N'%Sunny / Day (%' 

// this does not bring any result:
SELECT * FROM tabel_name where name like N'%Sunny / Day (W%'

1 个答案:

答案 0 :(得分:4)

以下是我尝试重现您的问题时发生的事情。我在这里使用Oracle 11g XE beta:

SQL> create table ntest (name nvarchar2(2000));

Table created.

SQL> insert into ntest (name) values (N'Sunny / Day (Weather)');

1 row created.

SQL> commit;

Commit complete.

SQL> select name from ntest where name like N'%Sunny / Day (%';

NAME
--------------------------------------------------------------------------------
Sunny / Day (Weather)

SQL> select name from ntest where name like N'%Sunny / Day (W%';

NAME
--------------------------------------------------------------------------------
Sunny / Day (Weather)

我不禁得出结论,问题出在您的数据上。也许它中有一些有趣的人物,例如(W之间的zero-width spacesoft hyphen