rpad无法正常工作

时间:2016-03-01 16:38:24

标签: mysql sql oracle-sqldeveloper

我做了一个非常简单的查询(rpad):

SELECT 
RPAD(COMERCIO,40,' ')
FROM
SIEBEL.transacciones_acumulaciones_vm
WHERE     ESTADO  = 'Procesado'
AND NUMERO in ( '20232385',
'20225479', 
'20265516');

输出:

RESTAURANTE EL QUINC                    (lenght 40)
MC DONALD (lenght 9)
CARREFOUR EXPRESS-PA                    (lenght 40)

这里的主要问题是,几乎每1000.000行,来自特定列的文字都不会添加该空格。

1 个答案:

答案 0 :(得分:2)

您的数据可能包含隐藏字符。在unix中,我使用cat命令查看平面文件:

$ cat -vet my-file ...显示扩展和非打印字符。 (例如,'标签'在输出中显示为^T。)

使用oracle,这是在文本字段中突出显示非打印字符的一种方法:

select replace(regexp_replace(COMERCIO,'[^[:print:]]', '!ACK!'),' ','.') as CAT_VET
from SIEBEL.transacciones_acumulaciones
where   ESTADO  = 'Procesado'
AND NUMERO in ( '20232385',
  '20225479', 
  '20265516');

...这将显示COMERCIO值,将任何非打印字符替换为标记!ACK!任何带句点字符的空格。

这并不能告诉您哪些字符是问题所在,但它确实提供了问题的指导/验证。