2010-10-29 100 views
4

我们的应用程序提供了基本上只是文本输入的多个查询接口。关于后端逻辑是否应该用通配符填充查询参数,然后执行类似操作还是应该只执行一个等号,是否有最佳做法?当然,另一种选择是允许用户使用通配符,然后在适当的情况下检查并使用“like”。查询表格逻辑:“Like”vs.“Equals”

我理解使用这样的通配符的性能意义,这可以被看作是一个主题问题,我只想知道是否有标准的做法。

回答

2

这是我留给用户的东西,然后才能真正做出选择。我见过的所有UI都允许用户指定条件:

  • 要检查的列。
  • 包含该关系的下拉框,如equal to,not equal to,less than,greater than, starts with
  • 要比较的值。

然后,对于starts with选项,你只是钉在%并使用like

您会注意到(出于您似乎已经了解的性能原因),我使用starts with而不是like来限制拖动数据库性能的可能性。

我并不是无限制like声明的忠实粉丝,尽管您也可以为那些能够存储颠倒索引的DBMS提供ends with

+0

你会使用aligator括号进行字符串比较吗? – 2010-10-29 15:43:33

+0

取决于用户。说实话,因为他们既不能理解'<>'也不懂'!=',所以我可能'不等于'(以及所有其他人的文本表示)。 – paxdiablo 2010-10-29 15:46:18

+1

!=上的好处 – 2010-10-29 15:50:10