1

Estado viendo ejemplos encontre este:

mysql> SELECT 1+'1';
       -> 2

pero yo ocupo que me de el resultado de un string en su totalidad seria algo así SELECT '2*2+3'.

Patricio Moracho
  • 54,367
  • 12
  • 35
  • 68
jesus jose
  • 45
  • 5
  • 2
    Bienvenido Jesus!, te sugiero leer [ask] para que tu pregunta sea mejor recibida. También, aprovecha y realiza el [tour] para entender mejor cómo funcionamos y de paso obtener tu primera [medalla](https://es.stackoverflow.com/help/badges)! – Jorgesys Aug 27 '17 at 03:19
  • Para hacer cálculos matemáticos no se deben usar las comillas, quedaría de la siguiente manera: `SELECT 2 * 2 + 3;` – Matias Olivera Aug 27 '17 at 03:52

1 Answers1

1

El motor de SQL es capaz de evaluar expresiones matemáticas de forma nativa, por ejemplo: SELECT (2+3)/2, sin embargo, en tu caso, lo que intentas es evaluar una expresión que pudiera estar guardada en una cadena ya sea en variable o en una columna. Para resolverlo puedes aprovechar las sentencias dinámicas de la siguiente manera:

set @formula = '(2+3)/2';

SET @sql = CONCAT('SELECT ''', @formula, ''' FORMULA,', @formula, ' RESULTADO');
PREPARE StmtStd FROM @sql;
EXECUTE StmtStd;

Salida:

╔═══╦═════════╦═══════════╗
║ # ║ FORMULA ║ RESULTADO ║
╠═══╬═════════╬═══════════╣
║ 1 ║ (2+3)/2 ║ 2,5000    ║
╚═══╩═════════╩═══════════╝

Importante:

Las sentencias dinámicas son muy útiles pero si no tenemos control sobre las mismas, es un a puerta abierta a cualquier ataque de inyección de sql.

Patricio Moracho
  • 54,367
  • 12
  • 35
  • 68