字段中明明有这样的值,可是用select语句就是找不到,特郁闷的事情,请大家进来看看!

caobingyi 2008-07-29 08:55:06
有字段A的值为‘菲亚特’;用下面的语句来查找这条记录 select * from tblclient where A='菲亚特' ,
结果怎么是空的!
...全文
268 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxuu503 2008-07-30
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 caobingyi 的回复:]
再加上下面这句就Ok了:
update tblclient set clientname =replace(replace(clientname,char(8),''),char(9),'')

注:值 8、9、10 和 13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。

但是,为什么保存的时候会连这些符号也一起保存呢?
[/Quote]


我在22楼已经说了是回车了

如果在文本框内部,通过回车来提交页面,就会把回车也存进去
shinevi 2008-07-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 caobingyi 的回复:]
ClientName就是我说的A
本来数据类型是char,后来我改为varchar
[/Quote]
char型会自动在后面添加空格补充,应该是空格的问题
linsyuan 2008-07-30
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 perfectaction 的回复:]
估计你的clientname是个多行的输入框吧?
[/Quote]
可能,字段里可能存在回车.
nzperfect 2008-07-30
  • 打赏
  • 举报
回复
估计你的clientname是个多行的输入框吧?
caobingyi 2008-07-30
  • 打赏
  • 举报
回复
再加上下面这句就Ok了:
update tblclient set clientname =replace(replace(clientname,char(8),''),char(9),'')

注:值 8、9、10 和 13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。

但是,为什么保存的时候会连这些符号也一起保存呢?
caobingyi 2008-07-30
  • 打赏
  • 举报
回复
我试过了,大部分已经正常了,可是还有几个后面还跟着‘口口’,难道还有其他什么吗?
pt1314917 2008-07-30
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 caobingyi 的回复:]
我认为是编码格式不同造成的
那么,如何确保保存的值都是同一中编码格式呢?
[/Quote]

楼主,采用23楼的办法还是不行吗?
caobingyi 2008-07-30
  • 打赏
  • 举报
回复
我认为是编码格式不同造成的
那么,如何确保保存的值都是同一中编码格式呢?
lgxyz 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 caobingyi 的回复:]
select * from tblclient where clientname like '菲亚特%'可以
select * from tblclient where clientname like '%菲亚特'不可以
说明菲亚特的后面肯定有什么东西,但是不知道是什么?
[/Quote]
select * from tblclient where replace(A,' ','')='菲亚特'


楼主
replace还不行?
caobingyi 2008-07-29
  • 打赏
  • 举报
回复
select * from tblclient where clientname like '菲亚特%'可以
select * from tblclient where clientname like '%菲亚特'不可以
说明菲亚特的后面肯定有什么东西,但是不知道是什么?
wangxuelid 2008-07-29
  • 打赏
  • 举报
回复
半角或空格
rockyvan 2008-07-29
  • 打赏
  • 举报
回复
CHAR的长度是固定的,而VARCHAR的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。由于char是以固定长度的,所以它的速度会比 varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!

lgxyz 2008-07-29
  • 打赏
  • 举报
回复
应该是你字段类型的问题吧
REPLACE不行的话,
把字段类型改成VARCHAR看下
jasonren 2008-07-29
  • 打赏
  • 举报
回复
可能是空格导致的.
lgxyz 2008-07-29
  • 打赏
  • 举报
回复
select * from tblclient where replace(A,' ','')='菲亚特'

试下
Novelty 2008-07-29
  • 打赏
  • 举报
回复
把字段类型改为nvarchar
caobingyi 2008-07-29
  • 打赏
  • 举报
回复
我想不是空格的问题,因为我已经用下面的语句将他的空格去掉了。
update tblclient set clientname = ltrim(clientname)
update tblclient set clientname = rtrim(clientname)
yrwx001 2008-07-29
  • 打赏
  • 举报
回复
select * from tblclient where RTRIM(A) = '菲亚特' 
union
select * from tblclient where LTRIM(A) = '菲亚特'
yrwx001 2008-07-29
  • 打赏
  • 举报
回复
select * from tblclient where RTRIM(A) = '%菲亚特%' 
union
select * from tblclient where LTRIM(A) = '%菲亚特%'
huangqing_80 2008-07-29
  • 打赏
  • 举报
回复
LZ再仔细查一下表中A的值是否为‘菲亚特’,如果1楼的方法不对的话,这个值肯定含有其它字符
加载更多回复(16)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧