none
selezionare record con un campo testo che inizia con un numero RRS feed

  • Domanda

  • Un saluto

    Ho la necessità di estrarre record con all'interno un campo che ha per stringa iniziale un numero, ad es. "4534_alfa" , non sapendo a priori quale sia il numero con cui inizia la stringa.

    grazie e ciao

    Giovanni

    lunedì 15 aprile 2013 10:47

Risposte

  • Ciao Giovagava, non è molto complicato.. ti ho scritto un piccolo sample :

    DECLARE @myGenericValue VARCHAR(250),
    		@myNumericValue INT,
    		@i INT, 
    		@check BIT
    
    SET @check = 'true'
    SET @i = 0
    
    SET @myGenericValue = '4534_alfa'
    
    WHILE @check = 'true'
    BEGIN
    	
    	SET @i = @i + 1
    	
    	SET @check = ( SELECT isNumeric(LEFT(@myGenericValue, @i)) )
    	
    	PRINT CAST(@check AS VARCHAR) + ' ' + LEFT(@myGenericValue, @i)
    	
    END
    
    SET @myNumericValue = (SELECT LEFT(@myGenericValue, @i - 1) )
    PRINT 'Il valore numerico è: ' + CAST(@myNumericValue AS VARCHAR)
    ;


    Il risultato di questo ciclo è :

    1 4
    1 45
    1 453
    1 4534
    0 4534_
    Il valore numerico è: 4534

    lunedì 15 aprile 2013 10:57
  • Dopo aver preso spunto dal tuo esempio, ravanando nell'help, ho adottato questa soluzione:

    SELECT SER_CODE FROM SERVICE WHERE IsNumeric(LEFT(SER_CODE, 1))<>0

    SER_CODE puo contenere la stringa che inizia con un numero.

    Grazie e ciao

    Giovanni

    lunedì 15 aprile 2013 12:56

Tutte le risposte

  • Ciao Giovagava, non è molto complicato.. ti ho scritto un piccolo sample :

    DECLARE @myGenericValue VARCHAR(250),
    		@myNumericValue INT,
    		@i INT, 
    		@check BIT
    
    SET @check = 'true'
    SET @i = 0
    
    SET @myGenericValue = '4534_alfa'
    
    WHILE @check = 'true'
    BEGIN
    	
    	SET @i = @i + 1
    	
    	SET @check = ( SELECT isNumeric(LEFT(@myGenericValue, @i)) )
    	
    	PRINT CAST(@check AS VARCHAR) + ' ' + LEFT(@myGenericValue, @i)
    	
    END
    
    SET @myNumericValue = (SELECT LEFT(@myGenericValue, @i - 1) )
    PRINT 'Il valore numerico è: ' + CAST(@myNumericValue AS VARCHAR)
    ;


    Il risultato di questo ciclo è :

    1 4
    1 45
    1 453
    1 4534
    0 4534_
    Il valore numerico è: 4534

    lunedì 15 aprile 2013 10:57
  • Dopo aver preso spunto dal tuo esempio, ravanando nell'help, ho adottato questa soluzione:

    SELECT SER_CODE FROM SERVICE WHERE IsNumeric(LEFT(SER_CODE, 1))<>0

    SER_CODE puo contenere la stringa che inizia con un numero.

    Grazie e ciao

    Giovanni

    lunedì 15 aprile 2013 12:56
  • Io pensavo dovessi anche ricavare il numero interno.. (: eheh amen, ok così! 

    Un saluto

    lunedì 15 aprile 2013 13:10
  • hai ragione, rileggendo il primo post devo dire che non sono stato chiaro fino in fondo, scusa.

    grazie e ciao

    giovanni

    martedì 16 aprile 2013 11:03
  • Di nulla tranquillo.. :) alla prossima!

    @Fabrizio Giammarini : ho visto che hai flaggato l'altra come risposta al thread, però rileggendo penso ancora che la risposta corretta a quanto richiesto sia quella data da me! ;)

    Un saluto


    martedì 16 aprile 2013 12:41
  • Si, ho contrassegnato il tuo post come utile invece di come risposta perché in effetti è stato preso come spunto per la soluzione. Comunque rileggendo l'intervento penso anch'io che effettivamente anche il tuo post vada contrassegnato come risposta.

    martedì 16 aprile 2013 16:12
    Moderatore
  • (: thanx!
    martedì 16 aprile 2013 21:17