none
Um Select filtrando dados RRS feed

  • Pergunta

  • ola,

    tenho uma tabela X na minha BD, e nessa tabela tenho um campo valor. esse valor é (varchar(20)). o que guardo nele são valores que basicamente são formados ou só por numeros ou por junção de algarismos e numeros.. mas os que sao formados tem a seguinte ordem, sempre começam por 1 ou varias letras e só depois os numeros.

    vou exemplificar 4 exemplos dos valores na minha tabela... (263568; adb8759, bd8655, 2976897)

    entao o que estou pretendendo é apanhar estes valores e colocá-los num dropdownlist para consulta.. mas a minha ideia não é fazer um select de todos, mas sim 2 select, dependendo da escolha do usuário. caso ele quizer filtrar apenas com numeros,tem de aparecer no ddl apenas os valores formados só pelos numero, e caso ele quiser os que tem letras e numeros, aparecem somente estes no ddl.

    resumindo, preciso saber como construir o select que apanha só os numeros, e outro que apanha os que começam por letras...ou seja, select todos que começam com numero; e select todos que começam com um caractere..

    alguma ideia???


    sexta-feira, 3 de maio de 2013 13:25

Respostas

  • Flávio, 

    Você pode utilizar a function ISNUMERIC do SQL SERVER. 

    Ex:

    CREATE TABLE #TEMP 
    (
      Nome varchar(20) 
    ) 
    
    INSERT INTO #TEMP(Nome)VALUES('dantas444')
    INSERT INTO #TEMP(Nome)VALUES('3523455')
    INSERT INTO #TEMP(Nome)VALUES('565656')
    INSERT INTO #TEMP(Nome)VALUES('33434dff')
    
    SELECT * FROM #TEMP WHERE ISNUMERIC(Nome) = 1 
    
    DROP TABLE #TEMP

    Abraços, 

    Leandro Rodrigues


    Caso a resposta tenha ajudado, não esqueça de marcar como resposta válida

    sexta-feira, 3 de maio de 2013 14:14
  • Olá Flavio,

    Podes utilizar a função IsNumeric do SQL Server na consulta, verificando se o primeiro caractere é numérico ou não. Por exemplo:

    Para verificar os que iniciam com números:

    SELECT ISNUMERIC(SUBSTRING(<CAMPO>, 1, 1)) = 1

    Para verificar os que iniciam com alfanumérico:

    SELECT ISNUMERIC(SUBSTRING(<CAMPO>, 1, 1)) = 0

    Acho que resolve seu problema...

    Att.


    Fabio Rosa.

    sexta-feira, 3 de maio de 2013 14:22

Todas as Respostas

  • Flávio, 

    Você pode utilizar a function ISNUMERIC do SQL SERVER. 

    Ex:

    CREATE TABLE #TEMP 
    (
      Nome varchar(20) 
    ) 
    
    INSERT INTO #TEMP(Nome)VALUES('dantas444')
    INSERT INTO #TEMP(Nome)VALUES('3523455')
    INSERT INTO #TEMP(Nome)VALUES('565656')
    INSERT INTO #TEMP(Nome)VALUES('33434dff')
    
    SELECT * FROM #TEMP WHERE ISNUMERIC(Nome) = 1 
    
    DROP TABLE #TEMP

    Abraços, 

    Leandro Rodrigues


    Caso a resposta tenha ajudado, não esqueça de marcar como resposta válida

    sexta-feira, 3 de maio de 2013 14:14
  • Olá Flavio,

    Podes utilizar a função IsNumeric do SQL Server na consulta, verificando se o primeiro caractere é numérico ou não. Por exemplo:

    Para verificar os que iniciam com números:

    SELECT ISNUMERIC(SUBSTRING(<CAMPO>, 1, 1)) = 1

    Para verificar os que iniciam com alfanumérico:

    SELECT ISNUMERIC(SUBSTRING(<CAMPO>, 1, 1)) = 0

    Acho que resolve seu problema...

    Att.


    Fabio Rosa.

    sexta-feira, 3 de maio de 2013 14:22
  • Valeu Leandro,

    vou testar no meu projecto, mas já vi como é o funcionamento e digo que era exatamente este tipo de solução  que estava a procura.

    Obrigado pela ajuda e agradeco pelos muitos conhecimentos adquiridos cá no forum.

    segunda-feira, 6 de maio de 2013 09:41