【发布时间】:2019-08-18 11:28:30
【问题描述】:
我们有一个列名为A 的表,类型为nvarchar(23)。
后面的查询总是会返回23,也就是说所有记录的实际长度都是23。
select length(trim(req.A)), count(*)
from tableName req
group by length(trim(req.A));
|长度(修剪(req.A))|计数(*)|
------------------------------
|23 |1006 |
但是,当我们使用以下查询从该表中进行选择时,它的行为会有所不同,并且似乎总是在 PL/SQL Developer 的结果 Gridview 中删除最后一个字符。
select LENGTHB(req.A) lenb, length(req.A) len, req.* from tableName req
where req.A = 'NHBBBBB1398052635902235'; -- Note to the equal sign and the last charactar (5) of the where clause
结果是:
|lenb|len|一个 | --------------------------------- |46 |23 |NHBBBB139805263590223|如您所见,最后一个字符 (5) 在选择结果中被删除。
此外,当我们使用 to_char() 重写之前的查询时,它工作正常并返回正确的结果,长度为 23 和 (5) 作为最后一个字符。
select LENGTHB(req.A) lenb, length(req.A) len, to_char(req.A) from tableName req
where req.A = 'NHBBBBB1398052635902235';
结果是:
|lenb|len| to_char(req.A) | ---------------------------------- |46 |23 |NHBBBB1398052635902235|你能解释一下发生了什么吗!?这与 PL/SQL Developer 配置有关吗?如何解决?
【问题讨论】:
-
PL/SQL 和 PL/SQL Developer 是两个完全不同的东西。我想你的意思是第二个。
-
@WilliamRobertson 是的,你是对的。坦克
标签: oracle plsqldeveloper string-length