Pular para o conteúdo
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #96547
    Avatar de NiggazNiggaz
    Participante

      Bom dia galera,

      eu gostaria de ter um campo na tabela, aonde só letras seriam aceitas.
      Eu tentei utiliza o regexp_like, porém não deu muito certo. Tenho algumas dúvidas:

      Ao utilizar [A-Z], eu não estaria falando que é só para ter esses caracteres? e maiusculos?

      Ai eu utilizei a combinação [A-Z].’c’. Realmente se eu colocar somente uma letra e minuscula, o campo não aceita, porém se ele for acompanhado de outros caracteres maiusculos, ele é aceito.

      Fique na dúvida em relação a esses caras…

      Tem como fazer essa verificação de maiuscula no regexp ou é melhor utilizar: CHECK(NOME = UPPER(NOME))

      E como restringir somente para letras?

      rs, muita coisa né?

      Agradeço!

      #96550
      Avatar de burgaburga
      Participante

        [quote=”Niggaz”:2dyqlxxz]Ao utilizar [A-Z], eu não estaria falando que é só para ter esses caracteres? e maiusculos?

        Ai eu utilizei a combinação [A-Z].’c’. Realmente se eu colocar somente uma letra e minuscula, o campo não aceita, porém se ele for acompanhado de outros caracteres maiusculos, ele é aceito.[/quote]

        A resposta pra sua primeira pergunta é NÃO, pra falar que você quer somente caracteres maiúsculos entre A e Z você deve colocar os delimitadores também (^ e $).

        Ficando mais ou menos assim: regexp_like(coluna,’^([A-Z])+$’). O + eu coloquei pra considerar que tenha um ou mais caracteres maiúsculos e se quiser considerar também o espaço, fica assim: regexp_like(coluna,’^([A-Z| ])+$’)

        [quote=”Niggaz”:2dyqlxxz]Fique na dúvida em relação a esses caras…

        Tem como fazer essa verificação de maiuscula no regexp ou é melhor utilizar: CHECK(NOME = UPPER(NOME))

        E como restringir somente para letras?[/quote]

        Os exemplos anteriores que eu passei restringem somente pra maiúsculas.
        Agora, se quiser considerar maiúsculas e minúsculas e espaço, daria pra fazer assim: regexp_like(coluna,’^([[:alpha:]| ])+$’);

        Espero ter ajudado! 8)

        #96551
        Avatar de NiggazNiggaz
        Participante

          Bom dia burga, obrigado pela resposta!

          Eu criei a tabela com CHECK(REGEXP_LIKE(Nome,’^([A-Z])+$’,’c’)) e funcionou perfeitamente. 😀

          Não entendi uma coisa, oq vc quis dizer com considerar espaços em branco??

          #96552
          Avatar de burgaburga
          Participante

            Espaços em branco seria, deixar gravar um valor assim:

            ‘aaa aaa’

            Com espaço no meio, início e/ou final do valor… Agora, se a sua regra é gravar somente caracteres do alfabeto, e maiúsculas, então está legal do jeito que você fez, mas nem precisava do ‘c’.

            #96554
            Avatar de NiggazNiggaz
            Participante

              Entendi…

              eu coloquei o ‘c’ pq sem ele não funcionou. Deveria funcionar?

              #96556
              Avatar de burgaburga
              Participante

                Falei besteira, é legal você deixar o ‘c’ sim. Quando você omite, o oracle determina o padrão pelo NLS_SORT, que no meu banco é case sensitive e por isso eu omito. Mas é sempre bom especificar.

                #96557
                Avatar de NiggazNiggaz
                Participante

                  Blz burga! Valeu

                Visualizando 7 posts - 1 até 7 (de 7 do total)
                • Você deve fazer login para responder a este tópico.
                plugins premium WordPress