查看: 885|回复: 6
|
一个关于varchar的问题。。
[复制链接]
|
|
因为我必须储存"90,000.00"这类的资料,所以r_price 的column type 我用 varchar
当我execute 下面的query时,r_price = 90,000.00的资料并不会被return.. why?
SELECT * WHERE r_price <= '100,000.00'
但是如果我execute
SELECT * WHERE r_price BETWEEN '100,000.00 AND '200,000.000'
r_price = 120,000.00或者是 = 124,000.00的资料都可以被return
为何?
[ 本帖最后由 counterking 于 21-6-2006 03:34 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 21-6-2006 09:18 AM
|
显示全部楼层
你应该用 float, 或 decimal.
在储存和显示的时候可以用 coding 来控制你要显示的格式. |
|
|
|
|
|
|
|
发表于 4-7-2006 03:55 PM
|
显示全部楼层
原帖由 counterking 于 21-6-2006 12:54 AM 发表
因为我必须储存"90,000.00"这类的资料,所以r_price 的column type 我用 varchar
当我execute 下面的query时,r_price = 90,000.00的资料并不会被return.. why?
SELECT * WHERE r_price <= '1 ...
确定 '90,000.00' <= '100,000.00' 吗? |
|
|
|
|
|
|
|
发表于 8-7-2006 01:03 AM
|
显示全部楼层
没有install SQL server,
但逻辑应该是这样。
varchar是string。
比较string的方法和int/float不同。
90,000不return因为'900'是大过'1000'的。
只要第一个char大过就是大过了。
好像goatstudio说的,
用double吧。 |
|
|
|
|
|
|
|
发表于 8-7-2006 09:22 PM
|
显示全部楼层
如果是ORACLE的话, 试试用TO_NUMBER.
或用CONVERT
ie, convert(data type, column name)
[ 本帖最后由 microSys 于 8-7-2006 09:26 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 14-7-2006 10:47 PM
|
显示全部楼层
原帖由 tensaix2j 于 4-7-2006 03:55 PM 发表
确定 '90,000.00' <= '100,000.00' 吗?
在 varchar / string comparison 来说, '90,000.00' > '100,000.00' ... 因为 9 > 1 |
|
|
|
|
|
|
|
发表于 15-7-2006 10:58 AM
|
显示全部楼层
我所知道, CHAR 和 VARCHAR 的分别是。
CHAR FIELD 是 STORE FULL CHARACTER SET。
VARCHAR FIELD 是 STORE VARIABLE CHARACTER SET。
要如何说呢 ?
如果我要 STORE STRING "ABC" ,在 CHAR FIELD 将会贮藏
6 SPACES。 VARCHAR FIELD 就贮藏 3 SPACES。
EXAMAPLE:
CHAR FIELD (6) : "ABC "
VARCHAR FIELD (6) : "ABC"
如果要用 SQL SELECT , CHAR FIELD 先要 TRIM 才得到答案。
我在 DB2 里的经验。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|