【问题标题】:SQL Server - Select between two number ranges in a varchar field with text and numbersSQL Server - 在带有文本和数字的 varchar 字段中的两个数字范围之间进行选择
【发布时间】:2012-10-13 21:18:44
【问题描述】:

我有一张表格,其中的数字范围为 0-2000000。如果我执行 BETWEEN 50 AND 100,我可以使用 between 语句来获取事物的记录。这很有效。

但我遇到的问题是,如果字符串中有任何记录为“1FD32”,则此列是一个 varchar,我无法在它之间进行选择。 SQL 服务器无法转换“BETWEEN 50 AND 100”,因为它正在寻找一个 int。如何获取这些范围之间的所有记录,并忽略其中包含字母的任何记录?

【问题讨论】:

标签: sql sql-server-2008 sql-server-2005 sql-server-2008-r2 sql-server-2000


【解决方案1】:

如果您想进行数值比较,唯一保证没有错误的方法是使用CASE 语句。这是唯一保证评估顺序的 SQL 语句(不与聚合函数一起使用时)。

所以,下面是可以工作的代码:

select *
from t
where (case when isnumeric(col) = 1 then cast(col as bigint) end) between 20 and 100

请注意,如果您的数字包含小数点,那么您需要使用 DECIMALFLOAT 来代替。

【讨论】:

  • 戈登,这就是我需要的!谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 2018-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
相关资源
最近更新 更多