首页 > 解决方案 > 尝试使用编码 (CCSID) 网络响应查询数据库

问题描述

在我网站上的帖子响应中,我得到一个标识符0213725502A33A32DAACAEB001并将其传递给 where 子句中的查询,以便我可以使用它获取有关记录的其他数据。数据库的标识符列为Character 13,上面显然是26个字节。

问题是我的 sql 为此返回了一个空值。如果我将其复制并粘贴到本地查询中,则为空,但如果我输入,x'0213725502A33A32DAACAEB001 '则返回我想要的数据。

如何将这些数据从网络发送到我的 sql 并让它正确匹配编码的数据库版本,以便它返回我的记录?

这有效:

select * from tableOne.testing where CAST(identifier AS character(26) CCSID 65535) = x'0213725502A33A32DAACAEB001'  limit 5;

这不

select * from tableOne.testing where CAST(identifier AS character(26) CCSID 65535) = '0213725502A33A32DAACAEB001'  limit 5;

标签: sqldb2

解决方案


这可能是你需要的

select * from tableOne.testing
where CAST(identifier AS character(26) CCSID 65535) = 
   CAST('0213725502A33A32DAACAEB001' AS character(26) CCSID 65535)
limit 5;

或者

select * from tableOne.testing
where CAST(identifier AS character(26) CCSID 65535) = 
   CAST('0213725502A33A32DAACAEB001' AS character(26) FOR BIT DATA)
limit 5;

您还可以使用用户定义的函数,根据https://stackoverflow.com/a/42371427/9525344


推荐阅读