Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
C# 如何在C中匹配SQL查询?_C#_Sql_Sql Server_Regex - Fatal编程技术网

C# 如何在C中匹配SQL查询?

C# 如何在C中匹配SQL查询?,c#,sql,sql-server,regex,C#,Sql,Sql Server,Regex,我想用不同的条件值匹配相同类型的SQL查询 例如: SELECT * FROM Customer Where Age > 20 AND Age < 40 SELECT * FROM Customer Where Age > 30 AND Age < 50 当我通过第一个和第二个查询时,它应该返回true,但第二个和第三个查询返回false 我尝试使用正则表达式,但如何找到参数的位置?它可以在任何地方 是否可以使用SqlScriptDom执行此操作?怎样我正在使用Sql

我想用不同的条件值匹配相同类型的SQL查询

例如:

SELECT * FROM Customer Where Age > 20 AND Age < 40

SELECT * FROM Customer Where Age > 30 AND Age < 50
当我通过第一个和第二个查询时,它应该返回true,但第二个和第三个查询返回false

我尝试使用正则表达式,但如何找到参数的位置?它可以在任何地方


是否可以使用SqlScriptDom执行此操作?怎样我正在使用SqlScriptDom从SQL查询中获取表名,但是如何获取参数呢?

好的,我不想选择您的语言,但我认为这在这里很重要。示例中的查询没有参数。它们在WHERE子句中具有排除标准。听起来您试图做的是比较两个查询的文本,除了WHERE子句之外的所有内容。ANSI SQL和T-SQL都遵循相同的约定,即在SELECT查询中,WHERE子句位于FROM子句之后,任何GROUP BY、HAVING或ORDER BY子句之前。因此,如果您只想分析代码的文本,您可以将其拉出并以这种方式进行比较。不过,您可能会想到的一个问题是,SQL通常提供微妙的不同方式来完成相同的任务。例如,如果在示例中使用=而不是<和>,则可以使用BETWEEN运算符


我想您可能可以使用SqlScriptDom来做您想做的事情,但我做得不够好,无法真正帮助您。

参数化查询?您能解释一下匹配查询的含义吗?我不明白你想做什么。你可能问错了问题@Siyual请看更新的问题请看更新的问题。有没有库已经这样做了?我想可以用Microsoft.SqlServer.Transact-SQL.ScriptDom编写。我不是专家。看这里
SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM (Orders
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 10;

SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders FROM (Orders
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 50;

SELECT Employees.FirstName, COUNT(Orders.OrderID) AS NumberOfOrders FROM (Orders
INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID)
GROUP BY FirstName
HAVING COUNT(Orders.OrderID) > 50;