Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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 server SQL查询,其中列中的名称以某个字母开头;澄清_Sql Server_Vb.net - Fatal编程技术网

Sql server SQL查询,其中列中的名称以某个字母开头;澄清

Sql server SQL查询,其中列中的名称以某个字母开头;澄清,sql-server,vb.net,Sql Server,Vb.net,我有一个运行进程的vb.net应用程序。为了加快速度,我将其分为几个线程,该过程要求员工分组,如下所示 SELECT * FROM Employ WHERE Name like '[A-C]%' ORDER BY RDate DESC 大多数情况下,我有“A-C”之类的组,但碰巧“Ms”是最大的组,所以我让他们自己的组“M-M”,即使这还不够,他们的线程也需要很长时间才能完成。所以我想分成两组,像‘Ma-Mm’和‘Mn-Mz’ 是否只是将上述查询更改为这些字母?比如: SELECT * FR

我有一个运行进程的vb.net应用程序。为了加快速度,我将其分为几个线程,该过程要求员工分组,如下所示

 SELECT * FROM Employ WHERE Name like '[A-C]%' ORDER BY RDate DESC
大多数情况下,我有“A-C”之类的组,但碰巧“Ms”是最大的组,所以我让他们自己的组“M-M”,即使这还不够,他们的线程也需要很长时间才能完成。所以我想分成两组,像‘Ma-Mm’和‘Mn-Mz’

是否只是将上述查询更改为这些字母?比如:

SELECT * FROM Employ WHERE Name like '[Ma-Mm]%' ORDER BY RDate DESC
SELECT * FROM Employ WHERE Name like '[Mn-Mz]%' ORDER BY RDate DESC
另外,如果名称列被编入索引,这是编写该查询的最佳方式吗


编辑:我正在使用Ms SQL Server

如果您正在使用SQL Server,则可以执行以下操作:

WHERE Name like 'M[a-m]%' 
但是,生成范围(如我的“否”)更难表示。您可以随时执行以下操作:

WHERE name >= 'Ma' and name < 'Mn'
其中name>='Ma'和name<'Mn'

还有。这适用于更复杂的范围。

我不认为模式匹配是这样的。您需要在这个级别下订单吗?这是一个潜在的瓶颈。你最好的选择可能是使用全文搜索索引。(我假设您使用的是Sql Server)是的,我测试过,模式匹配肯定不是这样工作的。至少在SQL Server中是这样。谢谢Jacob,我检查了order by,整个过程的执行时间没有明显的差异,无论是否有。我使用了这个“像'M[a-M]%”这样的名称,它通过了计数测试,因此选择了所有相关列,非常感谢您的帮助。