Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/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
Sql 选择需要一系列varchar的带有where子句的查询_Sql_Sql Server 2008_Stored Procedures_Where Clause_Varchar - Fatal编程技术网

Sql 选择需要一系列varchar的带有where子句的查询

Sql 选择需要一系列varchar的带有where子句的查询,sql,sql-server-2008,stored-procedures,where-clause,varchar,Sql,Sql Server 2008,Stored Procedures,Where Clause,Varchar,问题是,我有一个存储过程,它必须从数据库中选择产品,但只能选择那些介于开始产品代码和结束产品代码之间的产品,用户选择这些代码并将其发送到该过程 现在,产品代码是VARCHAR,它们可能包含数字和字母,如01,01B和02A可能是产品代码,程序必须能够选择用户选择范围内的所有值 我对这样的where子句很不理解: ... SELECT ... WHERE ... AND ProductCode >= @IniProCod AND ProductCode <= @FinProCo

问题是,我有一个存储过程,它必须从数据库中选择产品,但只能选择那些介于开始产品代码和结束产品代码之间的产品,用户选择这些代码并将其发送到该过程

现在,产品代码是VARCHAR,它们可能包含数字和字母,如
01
01B
02A
可能是产品代码,程序必须能够选择用户选择范围内的所有值

我对这样的where子句很不理解:

...
SELECT ...
WHERE ... AND
 ProductCode >= @IniProCod
 AND 
 ProductCode <= @FinProCod
...
...
SELECT ...
WHERE ... AND
 ProductCode >= '''+@IniProCod+'''
 AND 
 ProductCode <= '''+@FinProCod+''''
...
。。。
选择。。。
哪里及
产品代码>=@IniProCod
及
ProductCode='''+@IniProCod+''
及

ProductCode最可能的情况是,您需要让应用程序根据开始和结束代码计算出产品代码列表,然后将该列表发送到存储过程。您的SQL将只在(@myProductCodeList)

中包含类似于
和ProductCode的内容,如果您致力于这些代码,这是一个好主意。SQLServer当然可以按文本进行排序和比较。但是如果您的代码排序方式不同,数据库会对文本进行排序。。。好吧,那么范围就不匹配了。如果你能像iKnowKungFoo所说的那样将列表推到一个“IN”位置,那可能是一个非常直接的答案。你的答案是有道理的,但是我在过程调用之外对应用程序没有太多控制,所以我不确定在执行过程之前是否能够对其进行排序,这就是为什么我将重点放在查询上。