我使用像LIKE
这样的'%/_Description'
语句,但得到了以下结果:
使用'%/[_]Description'
,返回“描述”。
如何将结果仅限制为"Something/_Description"
请注意,这是一个标准的SQL,因此应该在SQL Server / Oracle上运行
谢谢,
答案 0 :(得分:2)
您可以使用wildchar characters:
中定义的字符转义ESCAPE
clause
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
在你的情况下(未经测试):
WHERE ... LIKE '%/\_Description' ESCAPE '\'
此语法由SQL Server和Oracle共享。
答案 1 :(得分:0)
您需要了解LIKE的工作原理:
// return rows like text111, text222, text333 etc
select * from users where username like 'text%';
// return rows like 111text, 222text, 333text etc
select * from users where username like '%text';
// return rows like 111text111, 222text222, 333text333 etc
select * from users where username like '%text%';
答案 2 :(得分:0)
你必须正确地逃避_因为它也是一个占位符。基于你的DBMS应该是!所以你的陈述可能看起来像%/!_Description
答案 3 :(得分:0)
_
char是Oracle中一个特殊的快乐角色。这就是为什么返回的行不符合您的预期。如果此查询是由程序生成的,则您可以使用_
代替[_]
。
或者,您可以使用oracle中的REPLACE
函数:
REPLACE( string1, string_to_replace [, replacement_string] )
在你的情况下
REPLACE( string_var, '_', [_] )
请注意,如果您的函数被调用太多次,这可能是一个瓶颈,所以我建议使用转义字符。
示例:
select REPLACE( 'aaaa_bbb', '_', '[_]' ) from dual