该表有一个varchar6类型的列,其中包含6个介于000000到999999之间的数字,或者为空。无论您为seq列的各个变量提供什么值,它都不会返回任何结果,但不会返回语法错误。如果使用两个varchar6进行中间操作,我怀疑您在sql中找不到任何东西。
sql查询为;
select Top 2000 A.*
from TABLE1 A
where A.SEQ between '0' and '999999'
这感觉像是一个设计缺陷,因为存储和比较数字可能不应该使用varchar6,但不幸的是,更改表的设计是不可能的。
如何更改此sql,使其能够正确比较?
2条答案
按热度按时间vshtjzan1#
你的代码应该有用。我怀疑你对数据有问题。您可以查看:
或:
当您发现数据有问题时,您可以修复该问题。您还将了解为什么不应将数字存储在字符串中。
0tdrvxhp2#
你说字符串是varchar(6),你想选择0-999999之间的任何一个,所以这似乎是任何数字。
您可以这样选择数值:
或者,如果您知道只有数字字符串和空格(我假设空格的意思是null或“”),您可以这样选择非空格: