- Este tópico contém 6 respostas, 2 vozes e foi atualizado pela última vez 13 anos, 10 meses atrás por
Niggaz.
-
AutorPosts
-
26 de outubro de 2010 às 4:27 pm #96547
Niggaz
ParticipanteBom 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!
26 de outubro de 2010 às 5:02 pm #96550burga
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)
26 de outubro de 2010 às 5:17 pm #96551Niggaz
ParticipanteBom 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??
26 de outubro de 2010 às 5:27 pm #96552burga
ParticipanteEspaç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’.
26 de outubro de 2010 às 5:31 pm #96554Niggaz
ParticipanteEntendi…
eu coloquei o ‘c’ pq sem ele não funcionou. Deveria funcionar?
26 de outubro de 2010 às 5:55 pm #96556burga
ParticipanteFalei 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.
26 de outubro de 2010 às 6:26 pm #96557Niggaz
ParticipanteBlz burga! Valeu
-
AutorPosts
- Você deve fazer login para responder a este tópico.