类SQL';%/_说明';返回意外的结果
我使用了类SQL';%/_说明';返回意外的结果,sql,wildcard,sql-like,Sql,Wildcard,Sql Like,我使用了LIKE语句,比如'%/\u Description',但得到了以下结果: 描述 某物/描述 使用“%/[[uU]Description”,返回“Description” 如何将结果限制为类似于“something/\u Description” 请注意,这是一个标准SQL,因此应该在SQL Server/Oracle上运行 谢谢,您需要了解类似的工作原理: // return rows like text111, text222, text333 etc select * from u
LIKE
语句,比如'%/\u Description'
,但得到了以下结果:
“%/[[uU]Description”
,返回“Description”
如何将结果限制为类似于“something/\u Description”
请注意,这是一个标准SQL,因此应该在SQL Server/Oracle上运行
谢谢,您需要了解类似的工作原理:
// 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%';
可以使用中定义的字符转义:
在您的情况下(未经测试):
此语法由SQL Server共享。您必须正确地转义u,因为它也是like的占位符。基于您的数据库管理系统,它应该是!因此,您的语句可能看起来像
%/_Description
字符是Oracle中一种特殊的jolly字符。这就是为什么返回的行不是您所期望的。如果此查询是由程序生成的,则可以用[\u]
替换
。
或者,您可以使用oracle中的REPLACE
功能:
REPLACE( string1, string_to_replace [, replacement_string] )
就你而言
REPLACE( string_var, '_', [_] )
请注意,如果函数被调用太多次,这可能是一个瓶颈,因此我建议使用转义字符
例如:
select REPLACE( 'aaaa_bbb', '_', '[_]' ) from dual
请指定更多。请用您正在使用的数据库标记您的问题。为什么SQL Server和Oracle都有?这是因为
匹配任何(单个)字符,而不是下划线%/[\u]说明与说明不匹配。你在问什么?我不知道这和OP提出的问题有什么关系!我没有完全理解他的问题到底是什么,所以我试图解释“喜欢”的逻辑,也许这会对他有所帮助。在这种情况下,你可以通过发表评论向OP提问。我这么说是因为你目前的回答没有回答这个问题,可能会导致你投下一些反对票。谢谢你的提示,伙计,我想这是为了逃避“_u2;”。“ESCAPE'\'是否有必要?我已经尝试过了,并且两个结果都返回了。@sophialiu-没错。我没有Oracle或SQL Server框要测试,所以我不确定默认值。设置默认值应该总是有效的。我在Oracle中尝试过,但得到了“说明”“也回来了,不知道为什么。”索菲利乌。也许你应该编辑这个问题并添加一些真实的代码。
REPLACE( string_var, '_', [_] )
select REPLACE( 'aaaa_bbb', '_', '[_]' ) from dual