我直接查询后端MS SQL Server的软件包.虽然我们在字段中输入数值,但关键字段(车辆编号)被定义为alpha.这只有一个例外,我们在车辆退役时在号码前加上"R"(这意味着我们将其出售或车辆被废弃).假设用户这样做,我们不应该使用此方法遇到问题.(对或错不是问题)
快进到现在.我正在尝试查询这些车辆编号的子集(800 - 899)以进行一些特殊处理.通过做'800'到'899'的范围,我们也得到80,81等.如果我将车辆编号投入INT,我应该能够获得正确的范围.除了这些"R"车辆现在踢我的屁股.
where vehicleId not like 'R%' and cast(vehicleId as int) between 800 and 899不过我试过,我在其中一辆"R"车上出现了投射错误.
工作是什么where vehicleId not between '800' and '899' and cast(vehicleId as int) between 800 and 899',但我觉得必须有更好的方式和更少混乱的方式.
我还尝试了其他变种HAVING和子查询都产生了投射错误.
虽然未经测试,但这应该可以解决问题:
where cast(replace(vehicleId,'R','') as int) between 800 and 899
Run Code Online (Sandbox Code Playgroud)
使用_运算符而不是%运算符:
WHERE vehicleId LIKE 'R8__' OR vehicleId LIKE '8__'
Run Code Online (Sandbox Code Playgroud)
您也可以将它们组合起来:
WHERE vehicleId LIKE '%8__'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |