佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1705|回复: 5

SQL2005里奇怪的事... 已解决,不奇怪了

[复制链接]
发表于 5-2-2009 09:48 AM | 显示全部楼层 |阅读模式
例子:

Table [TheTable] 两个column:
- [TheKey] varchar(30) not null (primary key)
- [TheValue] varchar(50) null

Sample Data:
INSERT INTO TheTable VALUES ('key1', 'test value')
INSERT INTO TheTable VALUES ('key2', 'test value')
INSERT INTO TheTable VALUES ('key3', 'test value')
INSERT INTO TheTable VALUES ('key4', 'test value ')
INSERT INTO TheTable VALUES ('key5', 'test value')


注意key4的test value后面有一个blank space。

当我select data的时候...

Select全部
SELECT * FROM TheTable

TheKey                         TheValue
------------------------------ --------------------------------------------------
key1                           test value
key2                           test value
key3                           test value
key4                           test value
key5                           test value


Select test value后面没有blank space
SELECT * FROM TheTable WHERE TheValue = 'test value'

TheKey                         TheValue
------------------------------ --------------------------------------------------
key1                           test value
key2                           test value
key3                           test value
key4                           test value
key5                           test value


Select test value后面有blank space
SELECT * FROM TheTable WHERE TheValue = 'test value '

TheKey                         TheValue
------------------------------ --------------------------------------------------
key1                           test value
key2                           test value
key3                           test value
key4                           test value
key5                           test value


怎么会这样???

[ 本帖最后由 chuinkit 于 5-2-2009 10:54 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 5-2-2009 10:15 AM | 显示全部楼层
正常阿!通常最后的blank space 会被 ignore .
回复

使用道具 举报

 楼主| 发表于 5-2-2009 10:22 AM | 显示全部楼层

回复 2# cikare1 的帖子

如果我要select value后面有blank space的,应该怎样select?
回复

使用道具 举报

 楼主| 发表于 5-2-2009 10:49 AM | 显示全部楼层
找到答案了!

用LIKE operator

Select test value后面没有blank space
SELECT * FROM TheTable WHERE TheValue LIKE 'test value'

TheKey                         TheValue
------------------------------ --------------------------------------------------
key1                           test value
key2                           test value
key3                           test value
key5                           test value


Select test value后面有blank space
SELECT * FROM TheTable WHERE TheValue LIKE 'test value '

TheKey                         TheValue
------------------------------ --------------------------------------------------
key4                           test value

[ 本帖最后由 chuinkit 于 5-2-2009 10:50 AM 编辑 ]
回复

使用道具 举报

发表于 16-7-2009 09:14 PM | 显示全部楼层
也可以 :
SELECT * FROM TheTable WHERE TheValue = 'test value '
AND DATALENGTH(TheValue)  = DATALENGTH('test value  ');
回复

使用道具 举报

发表于 29-7-2009 11:38 AM | 显示全部楼层
如果你的搜寻的RECORD超过百万, 用LIKE 会让你的搜寻时间便得很长。 所以能够避免用LIKE就别用
回复

使用道具 举报

Follow Us
您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 6-12-2025 11:04 AM , Processed in 0.235597 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表