我的表格中有一个名为TNAME
的{{1}}列。如您所见,长度 8 。表中有一些记录,所有记录在该列中都有8个符号。当我选择该列时,该值包含仅7个符号。如果我nvarchar2(8)
,结果为8 !!!
见图。
为什么会这样,任何想法?
另一张PIC
答案 0 :(得分:4)
让我们对此非常清楚:Oracle不是世界上最昂贵的数据库,因为它习惯性地断言('CMN00632' = 'CMN0063') is true
。因此问题出在您的设置中,无论是在您的环境配置中还是在您的数据本身中。
您仍然坚持认为您的GUI没有问题。我们无法验证这一点。但是,如果你错了,你就是唯一受到影响的人,所以我们假设你是对的。
另一种可能性是您的数据以某种方式损坏,可能是非打印字符。这个问题是影响ebvery行还是只影响表中的某些值?
无论哪种方式,都可以进行简单的检查:
select dump(tname)
from merchants
where tname = 'CMN00632';
输出应该是该字符串的ASCII值:67,77,78,48,48,48,51,50
。
顺便提一下,证明没有与该列关联的截断格式非常简单:使用列别名。这个查询返回了什么?
select tname as some_new_name
from merchants
where tname = 'CMN00632';
答案 1 :(得分:3)
查询是正确的。如您所见,记录与您的条件CMN00632
匹配。您将结果仅提高到3
的原因是因为GUI会切断值。尝试调整列TNAME
的大小,您将看到整个值。
答案 2 :(得分:0)
这种情况正在发生,因为在设置中,您设置的位置显示列数据最多为7个字符。
如果在命令提示符下执行查询,则会看到正确的结果。
在您的编辑器中执行以下查询并查看其提供的内容。
<强> select '123456789' as test from merchants;
强>
我敢打赌,这会在你正在使用的编辑器中以 1234567
结果。
还有一个基本问题, 您认为您的图像中显示的行会显示您的查询吗?