将布尔文本搜索转换为SQL查询WHERE子句

时间:2018-07-31 08:06:49

标签: c# sql sql-server sql-server-2008-r2

我们正在寻求实现一个搜索查询,该查询将对SQL中的特定列进行全文搜索。我们愿意直接在import vtk from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor from PyQt5 import Qt from PyQt5.QtCore import QTimer message = "tick" def onTimerEvent(): global message print(message) if message == "tick": message = "tock" else: message = "tick" app = Qt.QApplication([]) mainWindow = Qt.QMainWindow() renderer = vtk.vtkRenderer() vtkWidget = QVTKRenderWindowInteractor(mainWindow) vtkWidget.GetRenderWindow().AddRenderer(renderer) mainWindow.setCentralWidget(vtkWidget) vtkWidget.GetRenderWindow().GetInteractor().Initialize() #timerId = vtkWidget.CreateRepeatingTimer(100) #vtkWidget.AddObserver("TimerEvent", onTimerEvent) timer = QTimer() timer.timeout.connect(onTimerEvent) timer.start(100) mainWindow.show() app.exec_() SQL中进行操作,如下面的TomC建议的那样。该查询将由-

这样的用户输入
C#

我们要将搜索文本转换为SQL查询,如下所示-

(A AND B) OR (C AND D)

请告知最好的处理方法。

2 个答案:

答案 0 :(得分:1)

我不知道这是否是最好的正则表达式替换,但它可以正常工作

 # Feed the file text into findall(); it returns a list of all the found strings
   strings = re.findall(r'some pattern', f.read())

答案 1 :(得分:1)

在数据库方面,如果您要寻找模糊或不太精确的匹配项,我会使用CONTAINS。如果您简化了原始帖子,我会提到这一点。与带有前导通配符的LIKE不同,它可以使用INDEX来加快速度。以这种方式使用LIKE将导致表扫描。您必须创建FULLTEXT INDEX才能使用CONTAINS

另一种方法是使用CHARINDEX。这可以使用索引,但不能保证使用索引。与您的环境中的LIKE相比,我会对此进行测试。

where 
      (charindex('A',col) > 0 and charindex('B',col) > 0) 
   or (charindex('C',col) > 0 and charindex('D',col) > 0)