Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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_Sql Server - Fatal编程技术网

Sql 与相等运算符中的%类似?

Sql 与相等运算符中的%类似?,sql,sql-server,Sql,Sql Server,我们知道,在LIKE运算符中有%值表示所有值都是有效的,但在equal=运算符中是否存在类似值?LIKE的关键在于它支持通配符 Equals的意思就是相等,而不是像。是的,这是可能的 WHERE col1 LIKE '%' 匹配col1的所有非空值,而不是所有行 要实现与=完全相同的语义,只需 WHERE col1 = col1 但是最好从WHERE子句中省略这个无意义的表达式。%不是运算符,而是任意字符串的占位符 不,这就是喜欢的原因。您可以使用字符串函数,如instring。。。但这不是

我们知道,在LIKE运算符中有%值表示所有值都是有效的,但在equal=运算符中是否存在类似值?

LIKE的关键在于它支持通配符

Equals的意思就是相等,而不是像。

是的,这是可能的

WHERE col1 LIKE '%'
匹配col1的所有非空值,而不是所有行

要实现与=完全相同的语义,只需

WHERE col1 = col1
但是最好从WHERE子句中省略这个无意义的表达式。

%不是运算符,而是任意字符串的占位符


不,这就是喜欢的原因。您可以使用字符串函数,如instring。。。但这不是占位符

为什么你需要这样,你可以用like表示通配符,用=表示相等。你能解释一下你想做什么吗,也许可以举个例子?我不明白你在问什么。@Gabe-我猜是可选的搜索参数,如果没有提供,它们会匹配所有行。你说得对@MartinSmith,当我们通过存储过程编码时,你有更好的解决方案吗?@WildanMuhlis-你想知道的关于这个主题的一切。几乎想投票否决这个问题,因为它太聪明了。@FreshPrinceOfSO:我试图让提出这种问题的人自己思考,而不是让我们为他们做所有的思考。-1这并不能回答问题。我猜这个暗示应该是否定的,但实际上完全有可能达到像%with=@MartinSmith一样的效果。我想你碰巧猜到了OP想要知道什么,尽管从他的措辞中不一定很明显,这个答案是在你帮助澄清OP的潜在问题之前发布的。will其中col1=col1会显著降低性能?@WildanMuhlis-它可以做到。从这里的快速测试来看,条件的存在意味着SQL Server不会在col2上使用更窄的索引,在这种情况下,是因为条件CREATE TABLE t col2 int not null主键非聚集,col1 int not null;从T中选择col2,其中col1=col1so,只要没有空值,解决方案仍然可以,对吗?@WildanMuhlis-这意味着您可能会得到次优计划。动态生成的SQL很可能是一个更好的选项,或者请参阅讨论使用选项RECOMPILEBTW的部分,谢谢。我同意最好将查询保存在变量中,并在DynamicCriteria语句末尾执行它。