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

时间:2017-08-01 20:04:44

标签: sql oracle special-characters

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

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

我该怎么写?

5 个答案:

答案 0 :(得分:4)

如果您想匹配包含' bla%bla& 2'的Field_Name值,那么您需要写一下:

this

您可以指定要使用哪个字符来转义后续字符(感谢应该转到mathguy,而不是我)。您还必须set define off Select * From Some_Table Where Field_Name Like '%bla\%bla&2%' escape '\'; 以防止sqlplus尝试替换字符串中的值。

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

set define off

答案 1 :(得分:1)

如果我没有误会你用反斜杠(\)

逃脱它们
requireInteraction

答案 2 :(得分:1)

使用escape \来处理是一个文字

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

答案 3 :(得分:0)

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

祝你好运。

答案 4 :(得分: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 '\'