Jump to content

[SQL2000] Verificar se uma variável tem caracteres sem ser numéricos


Furriel

Recommended Posts

Olá,

Quero fazer um If para verificar se uma variável é só numérica ou se tem algum caracter diferente de [0-9].

Não estou a conseguir fazer isso.

Já fiz da forma IF(IsNumeric(@NUM)=1), mas assim funciona apenas de digitar letras, se colocar tipo as343 ou as-sd, já não dá.

Sugestões?

Obrigado.

EDIT: Se colocar primeiro letras e depois algarismos ele funciona, mas se colocar primeiro algarismos e depois letras já dá erro 👍

          Também dá erro se escrever caracteres do género [-:;]

Link to comment
Share on other sites

Seria mais facil pores aqui o código que tens. Assim é complicado saber de onde vem esse erro.

Aqui está:

CREATE PROCEDURE TESTE @NUM VARCHAR (1000) AS

DECLARE @a AS NVARCHAR (1000), @pos AS INTEGER, @n AS INTEGER, @i AS INTEGER, @texto AS NVARCHAR (1), @no AS INTEGER
SET @a = '0123456789'
SET @pos = 0
SET @n = DATALENGTH(@NUM)
SET @i = 1
SET @no = 0

WHILE @i < @n + 1
BEGIN
SET @texto = SUBSTRING( @NUM , @i , 1 ) 
SET @pos = CHARINDEX( @texto, @a )

IF @pos = 0
BEGIN
	SET @no = @no +1 
END

SET @i = @i +1
END

IF ( @no > 0 )
BEGIN
PRINT 'Só pode introduzir números.'
END
GO
Link to comment
Share on other sites

Eu testei o teu código e funcionou bem. Mostra aqui como tás a executar o procedimento para ver se aqui tb dá erro.

Testei da seguinte forma:

- exec TESTE '123' > nao deu erro

- exec TESTE 'dsadasdads' > "Só pode introduzir números."

- exec TESTE 'dsada111sdads' > "Só pode introduzir números."

- exec TESTE 'ad12ddas´d+das0+dsad' > "Só pode introduzir números."

Link to comment
Share on other sites

Não sei o que são expressões regulares, vou ter que googlar 😄 Nunca tinha sequer ouvida a expressão.

Tiago Salgado, eu estava a testar sem a plicas, com as plicas já não dá erros nenhuns 😛

Ele devia considerar outra variável, quando introduzia 123-123 ou escrevia 123abc

Estou a ver que uma variável deve estar sempre entre plicas 🙂

EDIT: Encontrei esta página com expressões regulares,http://www.roccofroes.com/materia_descricao.asp?materia_codigo=181, mas não percebi nada do que é 😉

EDIT2: Este explica melhor, http://www.macoratti.net/net_regex.htm, já percebi o que são as expressões regulares, não estava a associar pelo nome  ?

Link to comment
Share on other sites

Não sei o que são expressões regulares, vou ter que googlar 😄 Nunca tinha sequer ouvida a expressão.

Tiago Salgado, eu estava a testar sem a plicas, com as plicas já não dá erros nenhuns 😉

Ele devia considerar outra variável, quando introduzia 123-123 ou escrevia 123abc

pois, 123-123 é 0 (o sql server faz a conta...), provavelmente o erro de sintaxe que tinhas era por estares a subtrair letras ou assim...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.