PARSENAME
y para qué se usa?
PARSENAME
es una función que se usa para analizar nombres de objetos de bases de datos que siguen la estructura completa de SQL Server: Servidor.BaseDatos.Esquema.Objeto
. Permite extraer fácilmente cualquiera de estas partes mediante un índice de posición. Aunque su uso principal es para obtener partes de nombres de objetos en bases de datos, también puede utilizarse para dividir cadenas con estructura delimitada por puntos (.
).
Cada parte en un nombre completo se interpreta como:
1. Objeto: Nombre de la tabla o vista.
2. Esquema: Esquema al que pertenece el objeto.
3. Base de datos: Nombre de la base de datos.
4. Servidor: Nombre del servidor.
PARSENAME
PARSENAME ( 'nombre_completo_del_objeto', índice )
nombre_completo_del_objeto
: La cadena de texto que contiene el nombre completo del objeto, separada por puntos (.
).
índice
: Un número de 1 a 4 que indica qué parte del nombre se desea extraer:
PARSENAME
Supongamos que tienes un nombre completo como 'Servidor.BD.Eschema.Tabla'
y quieres obtener el nombre de la tabla:
SELECT PARSENAME('Servidor.BD.Esquema.Tabla', 1) AS NombreObjeto;
Resultado:
NombreObjeto
-------------
Tabla
El índice 1
extrae la primera parte (nombre del objeto) desde la derecha.
Si deseas obtener el nombre del esquema (Esquema
):
SELECT PARSENAME('Servidor.BD.Esquema.Tabla', 2) AS NombreEsquema;
Resultado:
NombreEsquema
--------------
Esquema
El índice 2
corresponde a la segunda parte (nombre del esquema) desde la derecha.
Para extraer la base de datos:
SELECT PARSENAME('Servidor.BD.Esquema.Tabla', 3) AS NombreBaseDatos;
Resultado:
NombreBaseDatos
----------------
BD
El índice 3
extrae la tercera parte (nombre de la base de datos) desde la derecha.
Si necesitas el nombre del servidor:
SELECT PARSENAME('Servidor.BD.Esquema.Tabla', 4) AS NombreServidor;
Resultado:
NombreServidor
---------------
Servidor
El índice 4
corresponde al nombre del servidor.
PARSENAME
para extraer partes de una IP
Aunque PARSENAME
está diseñado para nombres de objetos, también puede utilizarse con cualquier cadena delimitada por puntos, como una dirección IP:
SELECT PARSENAME('192.168.1.10', 1) AS Octeto1,
PARSENAME('192.168.1.10', 2) AS Octeto2,
PARSENAME('192.168.1.10', 3) AS Octeto3,
PARSENAME('192.168.1.10', 4) AS Octeto4;
Resultado:
Octeto1 | Octeto2 | Octeto3 | Octeto4
--------|---------|---------|---------
10 | 1 | 168 | 192
En este caso, PARSENAME
divide cada segmento de la IP en columnas separadas.
Puedes utilizar PARSENAME
para validar si un nombre de objeto tiene el formato correcto (por ejemplo, verificar si contiene solo esquema y tabla):
SELECT CASE
WHEN PARSENAME('BD.Esquema.Tabla', 3) IS NOT NULL THEN 'Nombre Completo'
ELSE 'Nombre Parcial'
END AS TipoNombre;
Resultado:
TipoNombre
------------
Nombre Completo
Esto verifica si la parte correspondiente a la base de datos (3
) está presente en el nombre completo.
PARSENAME
espera que los nombres estén separados por puntos (.
). Si el nombre tiene más de cuatro partes o si el número de segmentos no coincide con los índices, la función devolverá NULL
para las partes faltantes.
.
) en alguna de las partes, ya que puede confundir el delimitador.
PARSENAME
no valida la existencia de los objetos; solo extrae las partes basadas en la estructura de la cadena.
Para más información sobre PARSENAME
, consulta la documentación oficial de Microsoft.
Jorge García
Fullstack developer