SQL Server - Separar string con delimitador

 
Vista:
sin imagen de perfil

Separar string con delimitador

Publicado por Miguel (4 intervenciones) el 05/10/2016 19:16:57
Hola, en una tabla tengo el campo DIRECCION con la siguiente estructura

DIRECCION
CERRITO/866/PB/1010
CERRITO/866/P2/1010
CERRITO/866/P3/1010
CERRITO/866/P4/1010
CERRITO/866/P5/1010

y necesito separarlo desde un SELECT para que quede de la siguiente manera:

CALLE NUMERO PISO COD_POSTAL
CERRITO 866 PB 1010
CERRITO 866 P1 1010
CERRITO 866 P2 1010
CERRITO 866 P3 1010
CERRITO 866 P4 1010

Al separarlo siempre van a quedar 4 campos con 3 separadores /
Me ayudan?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Separar string con delimitador

Publicado por Isaias (4558 intervenciones) el 05/10/2016 20:59:39
No se cual sea tu nivel de SQL, pero es muy simple la respuesta:


1
select REPLACE('CERRITO/866/PB/1010', '/', ' ')

Resultado:
CERRITO 866 PB 1010
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Separar string con delimitador

Publicado por Miguel (4 intervenciones) el 05/10/2016 21:45:48
Gracias, pero eso lo único que hace es reemplazar el / por un blanco y lo que necesito es separar la cadena de un campo en 4
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Separar string con delimitador

Publicado por Isaias (4558 intervenciones) el 06/10/2016 00:22:08
Sorry, no habia LEIDO CORRECTAMENTE tu peticion, veamos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
declare @MyString varchar(100) = 'CERRITO/866/PB/1010'
declare @CALLE varchar(100)
declare @NUMERO varchar(100)
declare @PISO varchar(100)
declare @COD_POSTAL varchar(100)
 
SELECT @CALLE = SUBSTRING(@MyString, 1, CHARINDEX('/', @MyString) - 1)
SET @MyString = SUBSTRING(@MyString,(CHARINDEX('/', @MyString) + 1), LEN(@MyString))
SELECT @NUMERO = SUBSTRING(@MyString, 1, CHARINDEX('/', @MyString) - 1)
SET @MyString = SUBSTRING(@MyString,(CHARINDEX('/', @MyString) + 1), LEN(@MyString))
SELECT @PISO = SUBSTRING(@MyString, 1, CHARINDEX('/', @MyString) - 1)
SET @MyString = SUBSTRING(@MyString,(CHARINDEX('/', @MyString) + 1), LEN(@MyString))
SELECT @COD_POSTAL = @MyString
SELECT @CALLE AS CALLE
, @NUMERO AS NUMERO
, @PISO AS PISO
, @COD_POSTAL AS [CODIGO POSTAL]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Separar string con delimitador

Publicado por Miguel (4 intervenciones) el 06/10/2016 19:47:15
Muchas gracias Isaias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Separar string con delimitador

Publicado por Isaias (4558 intervenciones) el 06/10/2016 19:53:39
De nada compañero, puedes convertir la rutina en una funcione de usuario, que te regrese esos cuatro valores, suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Separar string con delimitador

Publicado por Miguel (4 intervenciones) el 07/10/2016 20:02:48
Gracias nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto cid
Val: 10
Ha aumentado su posición en 4 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Separar string con delimitador

Publicado por Alberto cid (5 intervenciones) el 06/01/2020 18:16:39
yo ocupo lo siguiente, si me ayudan por favor

declare @MyString varchar(100) = 'NombreCliente @@Nombre Direccion: @@Direccion Telefono: @@Telefono'
--La cadena puede variar ya que solo se puede poner 1, 2 o 3 campos
-- OCUPO OBTENER LAS VARIABLES @@ PARA SUSTITUIRLO VALOR POR EL CAMPO DE UNA TABLA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Separar string con delimitador

Publicado por Isaias (4558 intervenciones) el 06/01/2020 20:30:06
Hola

No se comprende su peticion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alberto cid
Val: 10
Ha aumentado su posición en 4 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Separar string con delimitador

Publicado por Alberto cid (5 intervenciones) el 06/01/2020 21:24:29
ok, perdon,

tengo una consulta donde la cadena que se va a imprimir va a depender del usuario donde de una lista de variables, el usuario puede seleccionarlas que se van a imprimir por ejemplo las variables son @@NOMBRE , @@DIRECCION y @@TELEFONO,

El usuario arma la siguiente cadena desde pantalla
Nombre del cliente: @@NOMBRE, Direccion: @@DIRECCION, Telefono; @@TELEFONO

Nota: esta cadena se guarda en una tabla


despues de un proceso la informacion que se debe guardar en la base de datos es:

Nombre del cliente: Cliente X SA de CV, Direccion: Domicilio conocido etc. , Telefono; 111 222 33 44

Lo que necesito es obtener son las variables @@ que tenga la cadena

espero ser mas claro, Saludos gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Separar string con delimitador

Publicado por Isaias (4558 intervenciones) el 06/01/2020 22:28:28
Perdona, pero es muy confuso, si el usuario esta "armando" la cadena, supongo que es desde un programa, este, debe capturar los valores de las variables:

@@NOMBRE, @@DIRECCION, @@TELEFONO (desconozco porque la doble @@)

¿Llegan a la base de datos mediante algun procedimiento?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE ALBERTO
Val: 10
Ha aumentado su posición en 4 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Separar string con delimitador

Publicado por JOSE ALBERTO (5 intervenciones) el 06/01/2020 23:18:33
VAR

la cadena se configura desde una pantalla, esta cadena se usara en un procedimiento donde se debe sustituir el valor de @@variable por los datos del cliente.

por eso es que debo obtener la variable en la cadena para despues cambiarlo al guardar en la BD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Separar string con delimitador

Publicado por Isaias (4558 intervenciones) el 07/01/2020 16:48:50
Ya queda un poco mas claro, ¿De donde salen los valores de @@NOMBRE, @@DIRECCION, @@TELEFONO?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE ALBERTO
Val: 10
Ha aumentado su posición en 4 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Separar string con delimitador

Publicado por JOSE ALBERTO (5 intervenciones) el 07/01/2020 17:03:57
Viene de una tabla tbDatosCliente(Nombre,Direccion,Telefono,Correo)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vega
Val: 102
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Separar string con delimitador

Publicado por Vega (43 intervenciones) el 07/01/2020 17:11:38
Hola Miguel,

Un truco que se puede usar a menudo es aprovechar la funcion parse(). Esta se puede aprovechar siempre y cuando no tengas mas de 4 columnas y te puede ahorrar mucho jaleo con las funciones de cadena:

Te dejo este ejemplo que hace uso de los valores que as dado en una CTE:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
with DIRECCION as (
select direccion = 'CERRITO/866/PB/1010' union
select direccion = 'CERRITO/866/P2/1010' union
select direccion = 'CERRITO/866/P3/1010' union
select direccion = 'CERRITO/866/P4/1010' union
select direccion = 'CERRITO/866/P5/1010'
),
	ATransformar as (
	select Direccion = replace(direccion, '/','.')
	from DIRECCION
)
select	parsename(direccion,1)
,		parsename(direccion,2)
,		parsename(direccion,3)
,		parsename(direccion,4)
 
from ATransformar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2
Ha aumentado su posición en 22 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Separar string con delimitador

Publicado por Hector (1 intervención) el 28/03/2020 20:30:31
Hola, Isais, podrías ayudarme, por favor
Quiero realizar un insert desde C#, tomemos de ejemplo que en un textbox yo ingrese "8888-25", quiero realizar un procedimiento almacenado para insertar lo que este antes del "-" en un campo en mi tabla, y lo que este después del "-" en otro campo diferente, muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar