Primero, no puedes usar ALIAS en WHERE cláusula. Deberías estar usando la columna,
SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val
FROM users
WHERE SUBSTRING(rating, INSTR(rating,',') +1, +2) = '15'
La razón es la siguiente:el orden de operación es SQL,
- cláusula FROM
- cláusula WHERE
- cláusula GROUP BY
- cláusula HAVING
- cláusula SELECT
- cláusula ORDER BY
el ALIAS tiene lugar en el SELECT cláusula que está antes de WHERE cláusula.
si realmente desea utilizar el alias, envuélvalo en una subconsulta,
SELECT *
FROM
(
SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val
FROM users
) s
WHERE val = '15'