2017-04-20 66 views
0

我在表格中有一行我无法理解内容。该字段是CHAR(8)和数据应该是很明显的字母数字,但在选择下面的几个“点”的结果根据下面的第一行显示:列显示不可打印的值,我如何看到它们是什么?

SELECT DISTINCT (USERID) 
FROM USER; 
--------------- 
USERID 
--------------- 
........ 
AC25 
A25A 
A25X 

事实证明,我不能让

SELECT USERID 
FROM USER 
WHERE USERID = '........'; 
--------------- 
USERID 
--------------- 

你能告诉我,如果有是您选择这个奇怪从该行给出的任何条款:这条线在一个特定的选择,它不会在下面的查询返回的结果?

我试过低价值但DB2不接受,我从来没有在表中看到过。 除了将查询与“不在”放在一起之外,你能帮我找到这个案例的选项吗?

+0

如果你从另一个表中选择时会发生什么? – maSTAShuFu

+0

我没有安装DB2,但它可能是'.....'只是控制台上输出的实际为空的值(或空值)?也许你会尝试像'SELECT * FROM USER WHERE userid ='''或'where userid is null' ... –

+0

另一个建议是将'ascii(userid)'添加到您选择的项目中。这会给你第一个字符的ASCII值(假设该字段不是'null')。 –

回答

5

这些点可能代表不可显示的字符。

尝试寻找的十六进制值

select distinct 
    userid, hex(userid) 
from user 

然后,您可以用十六进制文字仅选择该行...

select * 
from user 
where userid = x'C3C8C1D9D3C5E2' 
+0

查尔斯,非常感谢你 随着你的建议,我实际上证实它是一个低值或十六进制(00) 现在我可以做下面的查询和选择正确的记录。 SELECT USERID FROM USER WHERE USERID = x'0000000000000'; 非常感谢你:) –

+1

谢谢。您已经有了我的投票,并且当您的个人资料上的“上次看到”是在此时间之后时,我会将其删除。 –

相关问题