Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Separar texto y numero de un campo a otro campo

Estas en el tema de Separar texto y numero de un campo a otro campo en el foro de SQL Server en Foros del Web. Hola Estoy buscando la forma de separar en dos columnas el valor de una columna ( o sea el valor de un campo en dos ...
  #1 (permalink)  
Antiguo 05/01/2008, 12:58
 
Fecha de Ingreso: diciembre-2007
Mensajes: 8
Antigüedad: 16 años, 4 meses
Puntos: 0
Separar texto y numero de un campo a otro campo

Hola
Estoy buscando la forma de separar en dos columnas el valor de una columna ( o sea el valor de un campo en dos campos por cada fila)
Esto lo quiero hacer mediante una vista.
Basicamente el campo de origen contiene una cadena compuesta por letras y numeros y esto lo quiero divido en dos campos. El primero con las letras y el segundo con los numeros

Ejemplo:
Datos del campo de origen
ColumnaA
ghga1jk231kl121
212jkkj21jkj
12313
pojnjk12123

Resultado deseado
ColumaB........................ColumnaC
ghgajkkl........................1231121
jkkjjkj............................21221
.....................................12313
pojnjk............................12123
  #2 (permalink)  
Antiguo 07/01/2008, 06:46
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 7 meses
Puntos: 3
Re: Separar texto y numero de un campo a otro campo

Hola, sería mucho más simple si tuvieras un caracter delimitador entre los números y el texto, o bien que el texto o el número tuvieran un número definido de caracteres (para exstraerlos con la función substring o charindex). Será que el foro se comió los espacios??

De otra manera no se me ocurre más que hacer un montón de cases testeando cada caracter hasta identificar la parte numerica y la parte texto :P

saluodos
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen

Última edición por Sir Matrix; 07/01/2008 a las 06:56
  #3 (permalink)  
Antiguo 07/01/2008, 07:53
 
Fecha de Ingreso: diciembre-2007
Mensajes: 8
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Separar texto y numero de un campo a otro campo

Juastamente no tengo un caracter delimitador o una cantidad espesifica de espacio.
Realmente en el campo su usa para escribir el telefono del cliente y otros datos.
Por eso debo recuperar solo los caracter numericos en otra columna que seria el telefono.
  #4 (permalink)  
Antiguo 07/01/2008, 08:19
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 7 meses
Puntos: 3
Re: Separar texto y numero de un campo a otro campo

Hola, siempre y cuando no exista números en la parte del texto puede hacerse una función que testee cada caracter y determine donde empiezan los numeros

Aca te dejo una funcion que obtiene el telefono desde un varchar de 6 caracteres
Código PHP:
ALTER FUNCTION fn_BuscaFono  (@str varchar(6))
RETURNS VARCHAR (6)
AS
BEGIN
--DECLARE @STR AS VARCHAR(6)
--DECLARE @
INDEX AS TINYINT
--SET @STR='HA8239'
IF ISNUMERIC(SUBSTRING(@STR1,1))=1
   SET 
@INDEX 1
ELSE
   IF 
ISNUMERIC(SUBSTRING(@STR2,1))=1
      SET 
@INDEX 2
   
ELSE
      IF 
ISNUMERIC(SUBSTRING(@STR3,1))=1
         SET 
@INDEX 3
      
ELSE
         IF 
ISNUMERIC(SUBSTRING(@STR4,1))=1
            SET 
@INDEX 4
         
ELSE
            IF 
ISNUMERIC(SUBSTRING(@STR5,1))=1
               SET 
@INDEX 5
            
ELSE
               IF 
ISNUMERIC(SUBSTRING(@STR6,1))=1
                  SET 
@INDEX 6
               
ELSE       
                  RETURN 
NULL

RETURN SUBSTRING(@STR, @INDEX100)
END 
Y bueno, ahí tendrás que agregar más ifs para poder testear cadenas más largas, o tal vez podrías poner un for en lugar de repetir tantas veces el if.

También tendrás que hacer otra función similar para obtener la parte del texto.

Saludos!
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #5 (permalink)  
Antiguo 07/01/2008, 08:19
 
Fecha de Ingreso: diciembre-2007
Mensajes: 5
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Separar texto y numero de un campo a otro campo

La idea puede ser que leas toda esa cadena y vayas comparando cuando hay un número lo lleves para la variable que tú quieres o para un campo esta es una manera para hacerlo busca algún comando que te cuente la cadena completa después uno a uno lo comparas si es un número y lo llevas donde tú quieras ....

es una idea espero te sirva

saludos
jose
  #6 (permalink)  
Antiguo 07/01/2008, 08:29
 
Fecha de Ingreso: diciembre-2007
Mensajes: 8
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Separar texto y numero de un campo a otro campo

Me gusto la idea de Jose, porque realmente la cantidad de caracter en el campo es grande, ademas entre los numeros a vexes le agregan puntos u otros caracteres.
Ahora la pregunta es como lo hago??
Garcias

Saludos
Franck
  #7 (permalink)  
Antiguo 07/01/2008, 11:54
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 7 meses
Puntos: 3
Re: Separar texto y numero de un campo a otro campo

Hola,
aca dejo una funcion que puede servirte (esta con 100 caracteres pero ahi tu la cambias)

ALTER FUNCTION fn_BuscaNumeros (@str varchar(100))
RETURNS VARCHAR (6)
AS
BEGIN
--DECLARE @STR AS VARCHAR(50)
--SET @STR='HYHYHHA564564568239'

DECLARE @CUENTA AS TINYINT
DECLARE @NUMEROS AS VARCHAR(100)
SET @NUMEROS=''
SET @CUENTA=1

WHILE (@CUENTA < 100)
BEGIN
IF SUBSTRING(@STR, @CUENTA,1) IN ('0','1','2','3','4','5','6','7','8','9')
SET @NUMEROS = @NUMEROS + SUBSTRING(@STR, @CUENTA,1)

SET @CUENTA=@CUENTA+1
END

RETURN @NUMEROS

END

luego tienes que hacer una similar para la parte del texto y las llamas en tu select

saludos
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #8 (permalink)  
Antiguo 07/01/2008, 12:40
 
Fecha de Ingreso: diciembre-2007
Mensajes: 8
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Separar texto y numero de un campo a otro campo

Funciona

Muchisima Gracias
Me sacaste un gran dolor de cabeza
Saludos
Franck
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:23.