Bri*_*lis 2 sql sql-server sql-server-2005
我有一张带有注册号的车辆表,并希望选择一些用户提供的"从"和"到"值之间的子集.
所以我们说这个表看起来像这样:
id reg_num
1 DD1111
2 DD1112
3 DE2245
4 EE5678
5 EF6547
Run Code Online (Sandbox Code Playgroud)
我到目前为止的SQL看起来像这样:
select *
from vehicles
where reg_num >= 'DD' -- this value is user supplied
and reg_num <= 'DE' -- and so is this one
Run Code Online (Sandbox Code Playgroud)
应该(按我的想法)返回:
1 DD1111
2 DD1112
3 DE2245
Run Code Online (Sandbox Code Playgroud)
但相反,只返回:
1 DD1111
2 DD1112
Run Code Online (Sandbox Code Playgroud)
我想,SQL服务器看到"DE2245"作为比"德"更大,因此排除了该行.
我的问题:如何让SQL服务器包含以'DE'开头的所有行?
您必须在最后添加'zzzz',以匹配您的列宽定义.
select * from vehicles
where reg_num >= 'DD' and reg_num <= 'DE' + 'ZZZZZZZZZZZZ'
Run Code Online (Sandbox Code Playgroud)
where reg_num >= @userValueFrom
and left(reg_num,char_length(@userValueTo) <= @userValueTo
Run Code Online (Sandbox Code Playgroud)
但请注意,这其中不使用,因为在特区政府的列的函数中的任何指标.