我通常必须查询一个非常大的表,查找每个变量有多个条件的多个变量.通常,需要在多个范围内查询变量.例如,我可能需要VAR_1的所有记录,其中VAR_1在200-300,350-400,450-500之间.
通常我会写如下,但有人告诉我使用IN()而不是多个OR会更有效率.
SELECT * FROM table
WHERE VAR_1 BETWEEN '200' AND '300' OR
VAR_1 BETWEEN '350' AND '400' OR
VAR_1 BETWEEN '450' AND '500'
Run Code Online (Sandbox Code Playgroud)
有没有办法压缩这些信息,并OR通过嵌套LIKE或BETWEEN条款摆脱s IN()?有点像:
WHERE VAR_1 IN (BETWEEN '200' AND '300', BETWEEN '350' AND '400', BETWEEN '450' AND '500')
要么
WHERE VAR_1 IN ('[200-300]','[350-400]','[450-500]')
我尝试过这样的东西,但语法显然不正确.您可以指出我的任何想法或方向都很棒,对SQL来说仍然是新手.
我正在使用VS2012和SQL Server Express 2008.我已经简化了我的连接/查询,试图找出为什么我DataSet没有被填充.连接成功完成,没有抛出异常,但适配器没有填充DataSet.从中提取的数据库位于同一台PC上,使用时localhost\SQLEXPRESS不会更改结果.感谢您的任何意见!
SqlConnection questionConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
questionConnection.Open();
String sql = "SELECT * FROM HRA.dbo.Questions";
SqlDataAdapter adapter = new SqlDataAdapter();
DataSet ds = new DataSet();
SqlCommand command = new SqlCommand(sql, questionConnection);
adapter.SelectCommand = command;
adapter.Fill(ds);
adapter.Dispose();
command.Dispose();
questionConnection.Close();
Run Code Online (Sandbox Code Playgroud)
连接字符串:
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=CODING-PC\SQLEXPRESS;Initial Catalog=HRA;User ID=sa; Password= TEST" />
Run Code Online (Sandbox Code Playgroud)