Funções para tratamento de texto (strings)

Versão para impressãoEnviar para amigoVersão PDF

Para tratamento de string/texto veja abaixo as funções/expressões existentes.
Para uma lista de todas as funções do Informix, consulte o Information Center.

Alguns exemplos são baseados na tabela abaixo:

    create temp table dummy_table (
      cod int
    , texto1 char(20)
    , texto2 varchar(40)
    , texto3 varchar(40,11)
    , ltexto lvarchar(1000));
    insert into dummy_table values (1,' row1   ','var1', 'minvar1', 'meu super texto1');
    insert into dummy_table values (2,'linha2','var2', 'm2', 'texto2');
    insert into dummy_table values (3,'terceiro','var3', 'minvar3', 'meu texto3');
    insert into dummy_table values (4,'','','','');
    
  1. campo[n,x]
  2. SUBSTR, SUBSTRING
  3. ASCII
  4. LENGTH, CHARACTER_LENGTH / CHAR_LENGTH, OCTET_LENGTH
  5. CONCAT / ||
  6. FORMAT_UNITS
  7. IFX_ALLOW_NEWLINE
  8. INITCAP, UPPER, LOWER
  9. LPAD, RPAD
  10. TRIM, LTRIM, RTRIM
  11. REPLACE
  12. TO_CHAR

campo[n,x]


    Manual online: campo[n,x]
    Copia uma substring, começando na posição n até a posição x. Pode ser utilizado em vários campos do tipo string (CHAR, VARCHAR, BYTE, NVARCHAR, NCHAR, TEXT).
    Deve-se tomar cuidado com uso deste recurso na clausula WHERE de SELECT/UPDATE/DELETE porque quando utilizado o banco não tem como trabalhar com indices gerando um sequencial scan na tabela em questão. Para evitar este tipo de problema, sempre crie uma tabela temporária com os dados filtrados e por ultimo aplique esta clausula.
    Observação: O mesmo vale para a função SUBSTR e SUBSTRING.
    select texto1[3,6] , texto2[2,3] from dummy_table;
    
    texto1 texto2
    
    ow1    ar
    nha2   ar
    rcei   ar
    

SUBSTR, SUBSTRING


    Manual online: SUBSTR,SUBSTRING
    Copiam um pedaço de texto .
    As duas funções fazem a mesma coisa porém com sintaxe diferente.
    Diferente do operador [n,x] , os parametros destas funções representam a posição inicial e comprimento
    select substr('joao da silva',1,5) as a
         , substring('joao da silva' from 1 for 5) as b
         , substr('joao da silva',2,3) as c
    from sysdual;
    
    a  joao
    b  joao
    c  oao
    

ASCII


    Manual online: ASCII
    Retorna o valor numerico na tabela ASCII do primeiro caractere da string passado como parametro
    select texto1[1,1]
         , ascii(texto1) ascii_minusculo
         , ascii(upper(texto1)) ascii_maiusculo
    from dummy_table  ;
    
    texto1 ascii_minusculo   ascii_maiusculo
    
                        32                32
    l                  108                76
    t                  116                84
                        32                32
    

LENGTH, CHARACTER_LENGTH / CHAR_LENGTH, OCTET_LENGTH


    Manual online: LENGTH, CHARACTER_LENGTH / CHAR_LENGTH, OCTET_LENGTH
    Estas funções tem por finalidade retornar o tamanho de uma string e podem ter comportamento diferentes conforme o argumento passado como parâmetro.
    A funçao LENGTH retorna o tamanho de *bytes utilizado* pelo texto sem os caracteres brancos no final da string com exceção do tipo de dado TEXT, neste ele inclui os espaços em branco no final do texto. Se utilizado em um campo MULTIBYTE (locales chines, japones, etc) ela irá contar cada byte individualmente.
    A função CHAR_LENGTH é util para quando se trabalha com caracteres MULTIBYTE, ela conta cada palavra de dois-bytes como uma unica palavra, retornando assim o valor real do tamanho do texto. Mas deve-se ter cuidado ao utiliza-la pois seu comportamento é diferente para campos do tipo CHAR e VARCHAR. No campo CHAR ela sempre conta o tamanho do campo (mesmo campo vazio, não nulo) e no VARCHAR ela conta apenas o texto + espaços em branco.
    A função OCTET_LENGTH é um meio termo, ele considera o espaço em branco no final do texto mas conta caracteres MULTIBYTES byte a byte, igual ao LENGTH.
    select
           texto1
         , length(texto1) as len_t1
         , character_length(texto1) as chlen_t1
         , octet_length(texto1) as oclen_t1
         , length(trim(texto1)) as len_trim_t1
         , octet_length(trim(texto1)) as oclen_trim_t1
         , character_length(trim(texto1)) as chlen_trim_t1
    
         , texto3
         , length(texto3) as len_t3
         , character_length(texto3) as chlen_t3
         , octet_length(texto3) as oclen_t3
         , length(trim(texto3)) as len_trim_t3
         , octet_length(trim(texto3)) as oclen_trim_t3
         , character_length(trim(texto3)) as chlen_trim_t3
    
         , trim(ltexto) as ltexto
         , length(ltexto) as len_lt
         , character_length(ltexto) as chlen_lt
         , octet_length(ltexto) as oclen_lt
         , length(trim(ltexto)) as len_trim_lt
         , character_length(trim(ltexto)) as chlen_trim_lt
         , octet_length(trim(ltexto)) as oclen_trim_lt
    from dummy_table ;
    
    texto1          row1
    len_t1         5
    chlen_t1       20
    oclen_t1       20
    len_trim_t1    4
    oclen_trim_t1  4
    chlen_trim_t1  4
    texto3         minvar1
    len_t3         7
    chlen_t3       7
    oclen_t3       7
    len_trim_t3    7
    oclen_trim_t3  7
    chlen_trim_t3  7
    ltexto         meu super texto1
    len_lt         16
    chlen_lt       16
    oclen_lt       16
    len_trim_lt    16
    chlen_trim_lt  16
    oclen_trim_lt  16
    
    texto1         linha2
    len_t1         6
    chlen_t1       20
    oclen_t1       20
    len_trim_t1    6
    oclen_trim_t1  6
    chlen_trim_t1  6
    texto3         m2
    len_t3         2
    chlen_t3       2
    oclen_t3       2
    len_trim_t3    2
    oclen_trim_t3  2
    chlen_trim_t3  2
    ltexto         texto2
    len_lt         6
    chlen_lt       6
    oclen_lt       6
    len_trim_lt    6
    chlen_trim_lt  6
    oclen_trim_lt  6
    
    texto1         terceiro
    len_t1         8
    chlen_t1       20
    oclen_t1       20
    len_trim_t1    8
    oclen_trim_t1  8
    chlen_trim_t1  8
    texto3         minvar3
    len_t3         7
    chlen_t3       7
    oclen_t3       7
    len_trim_t3    7
    oclen_trim_t3  7
    chlen_trim_t3  7
    ltexto         meu texto3
    len_lt         10
    chlen_lt       10
    oclen_lt       10
    len_trim_lt    10
    chlen_trim_lt  10
    oclen_trim_lt  10
    
    texto1
    len_t1         0
    chlen_t1       20
    oclen_t1       20
    len_trim_t1    0
    oclen_trim_t1  0
    chlen_trim_t1  0
    texto3
    len_t3         0
    chlen_t3       0
    oclen_t3       0
    len_trim_t3    0
    oclen_trim_t3  0
    chlen_trim_t3  0
    ltexto
    len_lt         0
    chlen_lt       0
    oclen_lt       0
    len_trim_lt    0
    chlen_trim_lt  0
    oclen_trim_lt  0
    

CONCAT / ||


    Manual online: CONCAT / ||
    Faz concatenação de textos.
    select texto1
          ,texto2
          ,concat(texto1,texto2) as texto_concat
          ,texto1 || texto2 as texto_pipe
          ,concat(trim(texto1),trim(texto2)) as texto_concat_trim
          ,trim(texto1) || trim(texto2) as texto_pipe_trim
    from dummy_table
    where cod = 1 ;
    
    texto1              row1
    texto2             var1
    texto_concat        row1               var1
    texto_pipe          row1               var1
    texto_concat_trim  row1var1
    texto_pipe_trim    row1var1
    

FORMAT_UNITS


    Manual online: FORMAT_UNITS
    Originalmente criado para ser utilizado com as funções TASK e ADMIN porém pode ser utilizado pelo usuário.
    Sua finalidade é gerar um texto padrão para unidades de armazenamento de memória e disco.
    As unidades utilizadas nos parametros são: B,K,M,G,T,PB e P . P = Paginas no valor do sistema
    select format_units( 1000,'K')   as _1000k
         , format_units( 1343,'M',5) as _1343m
         , format_units( 20000,'p') as _paginas
         , format_units( 1,'p') as _pagina_sistema
    from sysdual;
    
    _1000k           0.98 MB
    _1343m           1.3115 GB
    _paginas         39.1 MB  
    _pagina_sistema  2.00 KB  
    
    

IFX_ALLOW_NEWLINE


    Manual online: IFX_ALLOW_NEWLINE
    Permite a inclusão de textos com quebra de linha (CR/LF)
    execute procedure ifx_allow_newline('f');
    Routine executed.
    
    insert into dummy_table (cod,ltexto) values (4,'teste
    linha2');
      282: Found a quote for which there is no matching quote.
    Error in line 66
    Near character position 48
    
    execute procedure ifx_allow_newline('t');
    Routine executed.
    
    insert into dummy_table (cod,ltexto) values (4,'teste
    linha2');
    1 row(s) inserted.
    

INITCAP, UPPER, LOWER


    Manual online: INITCAP, UPPER, LOWER
    A função INITCAP converte apenas a primeira letra de cada palavra em maiúsculo.
    A função UPPER converte todo texto em maiúsculo.
    A função LOWER converte todo texto em minusculo.
    select initcap('joão da silva filho') as a
         , upper('joão da silva filho') as b
         , lower('JOÃO DA SILVA FILHO') as c
    from sysdual;
    
    a  João Da Silva Filho
    b  JOÃO DA SILVA FILHO
    c  joão da silva filho
    

LPAD, RPAD


    Manual online: LPAD, RPAD
    Completam um texto com outro texto até um tamanho pré-definido, onde a RPAD completa ao lado direito do texto e LPAD completa ao lado esquerdo.
    select lpad('introducao',20,'.') as a
          ,lpad('vazio',20, ' ono ') as b
          ,lpad('10',5, '0')         as c
          ,rpad('introducao',20,'.') as d
          ,rpad('vazio',20, ' ono ') as e
    from sysdual ;
    
    a  ..........introducao
    b   ono  ono  ono vazio
    c  00010
    d  introducao..........
    e  vazio ono  ono  ono
    

TRIM, LTRIM, RTRIM


    Manual online: TRIM, LTRIM, RTRIM
    As funções RTRIM e LTRIM removem um ou mais carcaterer do inicio e/ou final de um texto.
    A função TRIM remove apenas um carcaterer do inicio e/ou final de um texto.
    Para as tres funções, quando não informado qual caractere(s) a ser removido, espaço em branco é considerado o padrão.
    select rtrim('100,00', ',0') as a
         , rtrim('100,020', ',02') as b
         , ltrim('100,001', '10') as c
         , rtrim('**_ joao da silva_**','_ *')      as d
         , ltrim('  joao da silva  ')      as e
         , trim('  joao da silva  ')       as f
         , trim(both "-" from'- joao da silva -' ) as g
    from sysdual ;
    
    a  1
    b  1
    c  ,001
    d  **_ joao da silva
    e  joao da silva
    f  joao da silva
    g   joao da silva
    

REPLACE


    Manual online: REPLACE
    Substitui um texto por outro
    select replace( 'joao da silva filho' , 'filho', 'junior')
    from sysdual ;
    
    (constant)
    joao da silva junior
    



TO_CHAR


    Manual online: TO_CHAR
    A função TO_CHAR gera, a partir de uma data/hora ou valor numérico, uma string formatada conforme definição do usuário.
    Para formatação de campos numéricos ele utiliza as mesmas formatações utilizadas pelas funções rfmtdec(), rfmtdouble() e rfmtlong().
    Para formatação de campos DATE/DATETIME ele trabalha com as mesmas mascaras utilizada pelas váriaveis GL_DATE e GL_DATETIME.
    # Copiado do Manual
    # Exemplo de formatos que podem ser utilizados com valores numéricos
    RFMTDEC Sample ESQL Program running.
    String = 210203.204
      Format String = '**###########'            Result = '**     210203'
      Format String =  '$$$$$$$$$$.##'           Result = '   $210203.20'
      Format String =  '(&&,&&&,&&&.)'           Result = ' 000210,203. ' 
      Format String =  '<,<<<,<<<,<<<'           Result = '210,203'
      Format String = ' $*********.**'           Result = '$***210203.20'
    
    String = 4894
      Format String = '**###########'            Result = ' **       4894'
      Format String =  '$$$$$$$$$$.##'           Result = '     $4894.00'
      Format String =  '(&&,&&&,&&&.)'           Result = ' 000004,894. '
      Format String =  '<,<<<,<<<,<<<'           Result = '4,894'
      Format String = ' $*********.**'           Result = '$*****4894.00'
    
    String = 443.334899312
      Format String = '**###########'            Result = ' **        443'
      Format String =  '$$$$$$$$$$.##'           Result = '      $443.33'
      Format String =  '(&&,&&&,&&&.)'           Result = '  0000000443. '
      Format String =  '<,<<<,<<<,<<<'           Result = ' 443'
      Format String = ' $*********.**'           Result = '$******443.33'
    
    String = -12344455
      Format String = '**###########'            Result = ' **   12344455'
      Format String =  '$$$$$$$$$$.##'           Result = '  $12344455.00'
      Format String =  '(&&,&&&,&&&.)'           Result = '(12,344,455.)'
      Format String =  '<,<<<,<<<,<<<'           Result = '12,344,455'
      Format String = ' $*********.**'           Result = ' $*12344455.00'
    RFMTDEC Sample Program over.
    
    # Exemplo de formatos com DATA e HORA
    > select dt1, dt2, TO_CHAR(dt1 , "%A. %e de %B, %Y") as a
    , TO_CHAR(dt2, "Gerado as %H horas e %M minutos") as b from tp01;
    
    dt1  18/07/2009
    dt2  2009-07-18 16:26:28
    a    Sábado. 18 de Julho, 2009
    b    Gerado as 16 horas e 26 minutos
    
    # CLIENT_LOCALE=pt_BR.8859-1
    > select dt1, dt2, TO_CHAR(dt1 , "%A. %e de %B, %Y") as a
    , TO_CHAR(dt2, "dia da semana: %A - mes %B") as b from tp01;
    
    dt1  18/07/09
    dt2  2009-07-18 00:00:00
    a    Sábado. 18 de Julho, 2009
    b    dia da semana: Sábado - mes Julho
    
    # CLIENT_LOCALE=en_US.8859-1
    > select dt1, dt2, TO_CHAR(dt1 , "%A. %e de %B, %Y") as a
    , TO_CHAR(dt2, "dia da semana: %A - mes %B") as b from tp01;
    
    dt1  07/18/2009
    dt2  2009-07-18 00:00:00
    a    Saturday. 18 de July, 2009
    b    dia da semana: Saturday - mes July
    

4.5
Média: 4.5 (22 votos)
Sua avaliação: Nenhum
Tags:

Comentar

O conteúdo deste campo é privado não será exibido ao público.
  • Endereços de páginas de internet e emails viram links automaticamente.
  • Você pode usar tags BBCode no texto.
  • Tags HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>

Mais informações sobre as opções de formatação

CAPTCHA
Este teste é para bloquear programas automatizados e previnir spams
CAPTCHA de Imagem
Digite o texto exibido na imagem.