查找数据

xuyanbin888 2008-05-15 10:39:51
ms sqlserver数据库CardTable表中card字段本身有一部分卡号,然后又从另外一个库中追加到这个CardTable表中card字段一部分卡号,发现追加的这部分卡号有问题,用sql语句找不到数据,例如:select card from CardTable where card='20080229490458002833'
查找不到该卡号,但是库里的确有该卡号,还有一个问题就是当我在库里用鼠标点击该卡号的时候该卡号就会看不到了,然后用鼠标点击其他字段该卡号又显示出来了,好像是前面有什么回车符似的,但是我用Replace(card,chr(30),"")把回车符去掉了还不行,查看卡号的长度与卡号本身长度是一致的,以前的卡号没有问题,只发现这批导入的卡号有问题,card字段的类型是nvarchar
我觉得应该不是字段类型的问题,因为以前导入的卡号没问题。大家帮我分析一下是什么原因,非常急,先谢谢大家了。
...全文
81 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuyanbin888 2008-05-15
  • 打赏
  • 举报
回复
问题解决了,是因为card字段里的数据有char(10)多余的字符,然后我把他去掉就行了。谢谢大家的帮助。
律己修心 2008-05-15
  • 打赏
  • 举报
回复
declare @sql nvarchar(2000)
select @sql=isnull(@sql+',','')+card from CardTable
select @sql

--把数据抽到一起
--观察对比一下
--分析什么在作怪
zzyyc 2008-05-15
  • 打赏
  • 举报
回复
估计里card字段里面有回车。
将导成文件本看看card字段。有特殊字符处理掉再导进去。
zhou968 2008-05-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tim_spac 的回复:]
SQL codeselect card from CardTable where replace(replace(replace(ltrim(rtrim(card)),char(9),''),char(10),''),char(13),'')='20080229490458002833'
[/Quote]
jsddj 2008-05-15
  • 打赏
  • 举报
回复
用select card from CardTable where card like '%20080229490458002833%'肯定可以找到的.
tim_spac 2008-05-15
  • 打赏
  • 举报
回复
try:
select card from CardTable where card like '%20080229490458002833%' 
JL99000 2008-05-15
  • 打赏
  • 举报
回复
首先,你看看数据由来的表是否能正常的显示数据,若正常往下
其次,是不是所有被导入的数据都未正常显示
接着,从数据由来的表中在CardTable表未被正常显示的取一条记录,找到该记录的卡号,插入到CardTable表中,看能否正常显示,如果正常继续说明跟该卡号的内容没有关系,如果不能正常显示,说明有关系,再找吧
pt1314917 2008-05-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tim_spac 的回复:]
SQL codeselect card from CardTable where replace(replace(replace(ltrim(rtrim(card)),char(9),''),char(10),''),char(13),'')='20080229490458002833'
[/Quote]
可能是数据里面存在换行符,试试这个。。
hery2002 2008-05-15
  • 打赏
  • 举报
回复
看一下字符串的长度有没有异常,
xuyanbin888 2008-05-15
  • 打赏
  • 举报
回复
这部分数据是我的一位同事导入的,他现在不在,我也不知道是从哪里导入的。
csshan 2008-05-15
  • 打赏
  • 举报
回复
"从另外一个库中追加到这个CardTable表中card字段一部分卡号"
还是数据追得有问题,
可以先弄个临时表,把数据从另一个库重新导入到临时表,再查查看看,

xuyanbin888 2008-05-15
  • 打赏
  • 举报
回复
空格已经去掉了,不行的。
tim_spac 2008-05-15
  • 打赏
  • 举报
回复
select card from CardTable where replace(replace(replace(ltrim(rtrim(card)),char(9),''),char(10),''),char(13),'')='20080229490458002833' 
tim_spac 2008-05-15
  • 打赏
  • 举报
回复
可能库里存的数据中包含了类似空格之类的其它字符
这样试试看:
select card from CardTable where ltrim(rtrim(card))='20080229490458002833' 

34,588

社区成员

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

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