ctrl +c失效情况

今天用户让我帮忙查询一个值,我查询了半天无法查询出来,脚本如下

--查出1行数据
select * from TB where sonumber =154532157 


--空白无数据
select * from TB where sonumber =154532157 and TrackingNumber = N'028114715084630'

--查出1行数据
select * from TB where sonumber =154532157 and 
TrackingNumber like N'028114715084630%'


--空白,注意此处TrackingNumber是我从前面结果集中ctrl+c方式拷贝出来得
 select * from TB where sonumber =154532157 and 
TrackingNumber = N'028114715084630                         ' 

 

--空白
 select * from TB  where sonumber =154532157 and 
TrackingNumber =cast( N'028114715084630                         ' as nchar(40))

到现在基本可以确定TrackingNumber存在无法拷贝的字符,于是我写了一个脚本输出它
 
declare @tb table (id int identity(1,1),col1 nchar(1))
declare @i int =0
declare @tmp nchar(40)

select top 1 @tmp=TrackingNumber from TB where sonumber =154532157 

while (@i<=40)
begin 

    insert into @tb
    select SUBSTRING(@tmp,@i,1)
    print @i
set @i=@i+1
end
select id, UNICODE (col1), col1, from @tb

--------------------------
48    0
50    2
56    8
49    1
49    1
52    4
55    7
49    1
53    5
48    0
56    8
52    4
54    6
51    3
48    0
9     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32     
32
---------------------------------
这下我们就知道是存在一个不可见得尾巴nchar(9)了
如此

--成功查询出数据
 select * from TB  where sonumber =154532157 and 
TrackingNumber =cast( N'028114715084630'+nchar(9) as nchar(40))

以下为简单得错误重现


declare @tb table (col1 char(10))
insert into @tb
select N'A'+NCHAR(9)

select * from @tb

select * from @tb
where col1=N'A'

select * from @tb
where col1=CAST(N'A' AS NCHAR(10))


select * from @tb
where col1=N'A         ' 


select * from @tb
where col1=N'A'+NCHAR(9) 



问题解决,这个经历告诉我们ctrl+c并没有我们想象中可靠

这个问题是在英文环境中出现,后续我会再中文环境中继续测试,看是否存在同样问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值