当前位置: 首页 > 面试题库 >

在varchar字段而不是数字字段上使用BETWEEN?

白星渊
2023-03-14
问题内容

我正在使用ColdFusion 8和SQL Server 2008 R2。

我试图查询一列值以获取具有范围内的值的行。该列应为数字,但不是。它被设置为varchar(由其他人)。有100,000多行数据。这是数据的伪样本:

ID COLUMN
1  1
2  1.2 
3  0.9 
4  5 
5  -6

我的查询如下所示:

select column
from table
where column between 1 and 2

该查询不会运行,因为where语句的列是varchar,并且出现转换错误,因此我必须将where语句更改为此:

where column between '1' and '2'

现在,当我运行这样的查询时,它会运行,但是我没有得到结果。但是我知道应该看到结果,因为我知道column字段中的许多值都在我查询的范围内。

我想知道是否由于字段是varchar而不是数字而看不到任何结果。可能会弄乱我的结果吗?

此外,我们正在搜索的记录超过100,000条,使用varchar字段而不是数字字段是否会对性能产生重大影响?


问题答案:

例如,您需要CAST结果WHERE ISNUMERIC(column) = 1 AND CAST(column AS decimal(10,5)) BETWEEN 1 AND 2



 类似资料:
  • 问题内容: 我们有两个表。第一个包含名称(varchar)字段。第二个包含一个字段,该字段引用第一个表中的名称字段。对于与该名称关联的每一行,将重复第二个表中的此外键。通常不建议使用varchar / string字段作为两个表之间的联接吗?何时可以将字符串字段用作联接字段? 问题答案: 当然可以使用varchar作为键字段(或简单地将其连接)。它的主要问题取决于您通常在varchar字段中存储的

  • 我正在将数据导入到第三方CRM中,并且对电话号码字段的限制比源数据库(MySQL)的限制更严格。我想抓取选择中的前10个数字字符。我没有整理现有数据的灵活性。我只能用那里的东西工作。到目前为止,我在论坛上所能找到的似乎都是创建一个自定义函数。自定义函数是唯一的方法吗?环境是MySQL5.7.19。 提前道谢!

  • 我试图为一个web应用程序实现登录功能。我发现如果我使用“用户名”以外的字段,CakePHP不允许身份验证。您能解释一下我如何使用电子邮件字段而不是用户名字段进行身份验证吗。 我在下面分享用户表和验证码:: 用户表 认证码

  • 我正在制作一个应用程序,其中包括一个用户信息管理部分。用户需要填写10个基本字段进行注册(名字、姓氏、地址等),但管理员也可以定义将包含在注册表中的自定义字段。目前,我用EAV实现了它。我有一个表“users”,其中包含所有10个基本字段作为列,users\u自定义字段(field\u id,field\u name,field\u type),其中包含所有自定义添加的字段,还有一个表“users

  • 我想使用Java8的流api进行以下练习: 给定 是一个简单的POJO,具有name(string)和age(int)属性 构造以下字符串

  • 我有一个带有varchar类型电子邮件字段的表。 除表中的一封电子邮件外,其他所有电子邮件都能正常工作。