Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   SQL Server (http://www.forosdelweb.com/f87/)
-   -   Separar texto y numero de un campo a otro campo (http://www.forosdelweb.com/f87/separar-texto-numero-campo-otro-campo-545644/)

fbaudelet 05/01/2008 12:58

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

Sir Matrix 07/01/2008 06:46

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

fbaudelet 07/01/2008 07:53

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.

Sir Matrix 07/01/2008 08:19

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!

JLEP 07/01/2008 08:19

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

fbaudelet 07/01/2008 08:29

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

Sir Matrix 07/01/2008 11:54

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

fbaudelet 07/01/2008 12:40

Re: Separar texto y numero de un campo a otro campo
 
Funciona

Muchisima Gracias
Me sacaste un gran dolor de cabeza
Saludos
Franck


La zona horaria es GMT -6. Ahora son las 05:08.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.