SQL Server: encontrar una subcadena utilizando la función PATINDEX
Estoy escribiendo diferentes consultas en SQL Server.
Tengo 2 tablas, Employees
y Departments
.
La tabla Employees
está compuesta por EMPLOYEE_ID
, ENAME
, ID_DEP
– id de departamento. La tabla Departments
está compuesta por ID_DEP
, DNAME
.
La tarea es mostrar Employee.ENAME
y su Department.DNAME
donde Department.DNAME
tenga la palabra Sales
dentro. Debo utilizar las funciones SUBSTRING
y PATINDEX
.
Aquí está mi código, pero creo que se ve bastante extraño y no tiene sentido. Sin embargo, necesito usar ambas funciones en esta tarea.
SELECT e.ENAME, d.DNAME
FROM EMPLOYEE e
JOIN DEPARTMENTS d ON d.ID_DEP = e.ID_DEP
WHERE UPPER(SUBSTRING(d.DNAME, (PATINDEX(''%SALES%'', d.DNAME)), 5)) = ''SALES''
¿Alguna idea de qué debo cambiar mientras sigo usando estas dos funciones?
davy.ai
Una mejora que podrías hacer a esta consulta es usar la función
CHARINDEX
en lugar dePATINDEX
.CHARINDEX
es más eficiente y más fácil de leer en este caso, ya que solo busca una subcadena específica en lugar de un patrón.Aquí tienes una versión actualizada de la consulta:
Esta consulta devolverá los mismos resultados que la consulta original, pero es más simple y eficiente.