Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ademar Souza

Verificar se uma String é uma função matemática válida

Recommended Posts

Olá pessoal.

Após vários dias de buscas na internet sem resposta, resolvi tirar uma dúvida que, a princípio, pode ser bem simples para os conhecedores do assunto:

 

Existe algum modo de verificar se uma string pode ser uma função matemática válida ?

Exemplo: '80>125'

 

Tem como fazer esta validação ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tenho mysql para testar mas já tentou fazer algo do tipo

 

 

Select (80<100) ....

 

E ver se retorna "true" ?

 

Pesquisei por "macro execução mysql" mas não encontrei nada que parece resolver isto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta,

Obrigado por responder, mas não seria este o caso.

Se eu fizer o teste utilizando números, ele realmente retornará TRUE:

SELECT (80<100) = "TRUE"

 

Mas no meu caso, eu preciso validar uma String: SELECT ('80>125')

 

Se acaso tiver mais alguma dica, agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ôpa, cara.

De onde vem esse '80>125'?

Qual linguagem de servidor você está usando?

 

Vou dar um exemplo funcional. Estou usando PHP para fazer a consulta.

<?php
    $formula = '80>125';
    $sql = 'SELECT (' . $formula . ') as resultado';
?>

Retorna : 0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste caso (80>120) retornará false, talvez seja precisobtratar a string inválida (não é matematicamente válida), chamando de uma function num bloco protegido deve resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá klawdyo,

A String citada ('80>125') seria o resultado da concatenação de três campos (texto) de uma tabela.

Ela seria montada com os campos na cláusula WHERE CONCAT(Campo1,Campo2,Campo3), então o seu exemplo também não serviria.

Com relação à linguagem de programação, eu utilizo o ASP.NET (VB.NET)

 

Acredito, conforme citado por Motta, que a melhor alternativa seja elaborar uma FUNCTION, onde poderei fazer alguns REPLACE nos operadores, realizar as comparações e retornar TRUE ou FALSE no final.

 

Obrigado a todos pela prontidão nas respostas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então quer dizer que o "campo1" é um número, "campo2" é um operador (<, > ou =), e o "campo3" é outro número? É isso?



Se for:

 

SELECT
num1, ope, num2,
CASE ope
WHEN '<' THEN num1 < num2
WHEN '>' THEN num1 > num2
END AS test
FROM eval

Compartilhar este post


Link para o post
Compartilhar em outros sites

O raciocínio seria este mesmo klawdyo.

Apenas preciso que estas opções do CASE sejam feitas na cláusula WHERE, pois o meu SELECT retornará a somatória de alguns itens onde a condição seja TRUE.

 

Tipo:

SELECT SUM(Probabilidade) WHERE CONCAT(Campo1,Campo2,Campo3) = TRUE

Compartilhar este post


Link para o post
Compartilhar em outros sites

É a mesma coisa, cara.

 

SELECT 
   num1, ope, num2
FROM eval
WHERE
   (CASE ope 
	WHEN '<' THEN num1 < num2
	WHEN '>' THEN num1 > num2
   END) = 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.