Acho que entendi a questão, não tem nada a ver com o SUBSTR : pelo que entendo, o SUBSTR está funcionando 100%, trazendo apenas os 10 primeiros caracteres (ou os que existam, se a coluna for menor que 10 cacarcteres), MAS o que ocorre é que no sqlplus se vc não formatar ele assume como largura da coluna na tabela , tipo (num banco 11g) :
=> veja que ** não tenho ** formato definido para a coluna : 12:24:33 SYSTEM:@sdpr:SQL>column username SP2-0046: COLUMN 'username' nÒo definido => faço a consulta : 12:26:06 SYSTEM:@sdpr:SQL>l 1 select substrb(USERNAME,1,10) USERNAME,OSUSER,SID,SERIAL#,LAST_CALL_ET "ELAPSED",MACHINE 2 FROM V$SESSION 3 WHERE (TYPE <> 'BACKGROUND') 4 AND (STATUS = 'ACTIVE') 5* ORDER BY ELAPSED DESC 12:26:09 SYSTEM:@sdpr:SQL>/ USERNAME OSUSER SID SERIAL# ELAPSED MACHINE ------------------------------ ------------------------------ ------ -------- ---------- ---------------------------------------------------------------- SIST# CHIAPPA1967\X5001129 2087 21091 9643 CHIAPPA1967\WIN24 SIST# DCSYSTEMINT 2514 22683 654 CHIAPPA1967\WIN0 SIST# DCSYSTEMINT 1746 43987 105 CHIAPPA1967\WIN0 SIST# DCSYSTEMINT 2707 27473 94 CHIAPPA1967\WIN0 SYSTEM 1372 38497 55 WIN72 SIST# DCSYSTEMINT 629 29395 54 CHIAPPA1967\WIN0 SYSTEM 1374 39589 30 WIN72 SYSTEM 1941 42845 24 WIN72 SIST# CHIAPPA1967\F2200237 1724 43379 10 CHIAPPA1967\NT937 SIST# CHIAPPA1967\X5000799 2327 26699 7 CHIAPPA1967\NT937 SIST# CHIAPPA1967\X5000506 996 20817 3 CHIAPPA1967\NT1147 SIST# CHIAPPA1967\F4402849 2698 45645 1 CHIAPPA1967\NT1150 SIST# CHIAPPA1967\X5000735 416 13491 0 CHIAPPA1967\NT1147 SYSTEM Y0623080 1909 11409 0 CHIAPPA1967\01-14207D311327 14 linhas selecionadas. ==> acima, o SUBSTR ** FUNCIONOU 100% CORRETO **, mas o sqlplus, POR CONTA PRÓPRIA, sem formatação assumiu uma largura para a coluna... Agora VOU indicar que quero para a coluna uma largura de 10 : 12:26:15 SYSTEM:@sdpr:SQL>column username format a10 12:26:29 SYSTEM:@sdpr:SQL>l 1 select substrb(USERNAME,1,10) USERNAME,OSUSER,SID,SERIAL#,LAST_CALL_ET "ELAPSED",MACHINE 2 FROM V$SESSION 3 WHERE (TYPE <> 'BACKGROUND') 4 AND (STATUS = 'ACTIVE') 5* ORDER BY ELAPSED DESC 12:26:32 SYSTEM:@sdpr:SQL>/ USERNAME OSUSER SID SERIAL# ELAPSED MACHINE ---------- ------------------------------ ------ -------- ---------- ---------------------------------------------------------------- SIST# CHIAPPA1967\X5001129 2087 21091 9660 CHIAPPA1967\WIN24 SIST# DCSYSTEMINT 2514 22683 671 CHIAPPA1967\WIN0 SIST# DCSYSTEMINT 1746 43987 122 CHIAPPA1967\WIN0 SIST# DCSYSTEMINT 2707 27473 111 CHIAPPA1967\WIN0 SIST# DCSYSTEMINT 629 29395 71 CHIAPPA1967\WIN0 SIST# CHIAPPA1967\X5000799 2327 26699 24 CHIAPPA1967\NT937 SIST# CHIAPPA1967\X5000506 996 20817 20 CHIAPPA1967\NT1147 SIST# DCSYSTEMINT 1929 33667 5 CHIAPPA1967\WIN0 SIST# DCSYSTEMINT 2294 48935 1 CHIAPPA1967\WIN0 SIST# DCSYSTEMINT 1519 29621 0 CHIAPPA1967\WIN0 SIST# DCSYSTEMINT 582 50161 0 CHIAPPA1967\WIN0 SYSTEM Y0623080 1909 11409 0 CHIAPPA1967\01-14207D311327 12 linhas selecionadas. ==> TÁ VENDO (se a formatação do yahoo!groups deixar:) como está com 10 caracteres de largura a coluna ??? Pra mim é ISSO que vc está vendo aí : SUBSTR funcionando 100% certo mas sqlplus ASSUMINDO uma largura para a coluna e portando mostrado "brancos" na tela, yes ?? []s Chiappa