如何在Oracle SQL查询中处理/使用特殊字符,如百分比(%)和符号(&)

问题描述 投票:7回答:5

我需要在SQL查询的LIKE子句中包含特殊字符“%”,例如:

Select * From Some_Table Where Field_Name Like 'bla%bla&2';

我该怎么写?

sql oracle special-characters
5个回答
4
投票

如果你想匹配包含'bla%bla&2'的Field_Name值,那么你需要写这个:

set define off
Select * From Some_Table Where Field_Name Like '%bla\%bla&2%' escape '\';

您可以指定要使用哪个字符来转义后续字符(感谢应该转到mathguy,而不是我)。您还必须使用set define off来防止sqlplus尝试替换字符串中的值。

但是,如果要匹配与给定字符串完全相同的Field_Name值,则执行以下操作:

set define off
Select * From Some_Table Where Field_Name = 'bla%bla&2';

1
投票

如果我没有弄错你用反斜杠(\)逃脱它们

Select * From Some_Table Where Field_Name Like 'bla\%bla&2' ESCAPE '\';

1
投票

使用escape \来对待是一个文字

SELECT *
  FROM Some_Table
 WHERE Field_Name LIKE 'blah\%'|| 'blah' ||'&'|| '2';

0
投票

我猜你正在使用一种工具来处理&n,其中n是一个数字,作为变量标记。如果您使用的是SQL * Plus或SQL Developer,则需要发出SQL * Plus命令SET DEFINE OFF。其他工具可能使用其他方法来实现此目的。

祝你好运。


0
投票

我不认为反斜杠转义字符在这里可用于&符号。相反,您需要使用双管将搜索划分为连接字符串。在每段文字文本周围使用单引号。接下来,将&与chr(38)替换为&符号。你可以看到这个:

select chr(38) from dual

您仍然希望在%之前包含反斜杠并使用escape'\'结束语句。注意,我没有引用chr(38)。

select * From Some_Table Where Field_Name Like 'bla\%bla'||chr(38)||'bla' escape '\'
© www.soinside.com 2019 - 2024. All rights reserved.