Using BETWEEN on a varchar field not a numeric field?

我是研究僧i 提交于 2019-12-07 12:53:53

问题


I am using ColdFusion 8 and SQL Server 2008 R2.

I am trying to query a column of values to get rows with a value within a range. The column SHOULD be numeric, but it's not. It's setup as a varchar (by someone else). There are 100,000+ rows of data. Here's a FAKE sample of the data:

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

My query looks like this:

select column
from table
where column between 1 and 2

This query won't run because the where statement's column is a varchar, and I get a conversion error, so I have to change the where statement to this:

where column between '1' and '2'

Now, when I run a query like this, it runs, but I don't get results. But I know that I should be seeing results, because I know that many of the values in the column field are within that range I am querying.

I am wondering if I am seeing no results due to the field being a varchar and not a numeric. Might that be messing up my results?

Also, we have 100,000+ records we are searching through, would there be a big performance hit by using a varchar field instead of a numeric field?


回答1:


You need to CAST the results WHERE ISNUMERIC(column) = 1 AND CAST(column AS decimal(10,5)) BETWEEN 1 AND 2 for example.




回答2:


One more option

Implicit transformation is carried out nvarchar() into numeric()

Cost of operations obvious and implicit transformation equals, but code a little bit it is less;))

  • Predicate

SELECT *
FROM dbo.your_table
WHERE [COLUMN] BETWEEN 1.00 AND 2.00


来源:https://stackoverflow.com/questions/13297652/using-between-on-a-varchar-field-not-a-numeric-field

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!