SQL:与WildCard运算符混淆

时间:2016-11-22 14:07:00

标签: sql sql-server operators wildcard sql-server-2014

这两个sql语句之间有什么区别

//HTML-Template
var tHTML = (function(){/*
    <div>
        <div><span id = 'sName'>-</span></div>
        <div><input id = 'inFile' name = 'inFile' type = 'file' /></div>
    </div>
*/}).toString().split('/*').pop().split('*/')[0].trim();

//Append HTML
document.body.innerHTML += tHTML;

//Add change event
var tF = document.querySelector('#inFile');
tF.onchange = function(){
    if(this.files && this.files.length){
        var tS = document.querySelector('#sName');
        tS.textContent = this.files[0].name
    }
};

//Execute
tF.click();

显示相同的结果:字母从a,k,g

开始

4 个答案:

答案 0 :(得分:2)

like '[^AKG]% - 这将获取名称的第一个字符不是A,K或G的行。^匹配不在指定集合中的任何单个字符或指定的字符范围。还有一个否定not。因此,当您说name not like '[^AKG]%'时,您会获得名称的第一个字符为A,K或G的行。

name like '[AKG]% - 您获得名称的第一个字符为A,K或G的行。

通配符[]匹配指定范围内的任何字符或一组字符。在你的情况下,它是一组字符。

所以这两个条件都是等价的。

答案 1 :(得分:2)

您正在使用双&#39; NOT&#39;。胡萝卜&#39; ^&#39;在你的第一个角色匹配中是“#not;&#39;”的简写,所以你评价的不是[不是&#39; AKG]%IE不喜欢&#39; [^ AKG]%&#39;。

答案 2 :(得分:0)

1)在第一个查询中,您使用的是“不”和“^”,基本上它不是两次,因此它取消了输出 因此您的查询是'不喜欢[^ AKG]'==&gt; '喜欢[AKG]'

答案 3 :(得分:0)

^ a.k.a插入符号或向上箭头。

此符号的目的是为括号[]中未列出的任何字符提供匹配,这意味着通常它不会为以AKG开头的任何字符提供结果,但是因为您添加了单词NOT对于查询,您基本上取消了运算符,就像您在数学中一样:

( - 1)*( - 1)