Sql 选择需要一系列varchar的带有where子句的查询
问题是,我有一个存储过程,它必须从数据库中选择产品,但只能选择那些介于开始产品代码和结束产品代码之间的产品,用户选择这些代码并将其发送到该过程 现在,产品代码是VARCHAR,它们可能包含数字和字母,如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
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”位置,那可能是一个非常直接的答案。你的答案是有道理的,但是我在过程调用之外对应用程序没有太多控制,所以我不确定在执行过程之前是否能够对其进行排序,这就是为什么我将重点放在查询上。