Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类SQL';%/_说明';返回意外的结果_Sql_Wildcard_Sql Like - Fatal编程技术网

类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