Come selezionare un valore numerico da nvarchar colonna in sql server?

Ho la tabella come

Create table Producttbl ( sno nvarchar(100),sname nvarchar(200),price nvarchar(100))

Valori sono

sno    sname price
1       aaa   1.50
2       ccc   5.30 
abc     xxx   abc
3       dsd   kkk 
nn      dss   5.1 

Colonna di prezzo è nvarchar si accettano tutti i tipi di dati, come stringa o numerico.

Dalla tabella, selezionare risultati come questo:

   sno        sname  price
    1           aaa   1.50
    2           ccc   5.30

Si prega di aiutare me.

  • Se si dispone di sno 1a) si ottiene 1 o escluderlo dal set?
  • è possibile che si desidera utilizzare la funzione ISNUMERIC: msdn.microsoft.com/en-us/library/aa933213(v=sql.80).aspx
  • Avete considerato che non si dovrebbero avere valori non numerici in un campo prezzo. Forse le vostre esigenze di progettazione, di rivisitare.
InformationsquelleAutor kanth | 2011-06-24



2 Replies
  1. 2

    È presumibilmente desidera sno valori che consistono in cifre e solo in cifre (in caso contrario, è necessario specificare che “numerico” tipi che si desidera accettare):

    select * from ProductTbl where sno not like '%[^0-9]%'

    Usiamo un doppio controllo negativo, di escludere sno valori che contengono un numero.

  2. 2

    Avete provato a usare la funzione isnumeric?

    SELECT sno,sname
    FROM ProductTbl
    WHERE ISNUMERIC(sno)=1

    Si dovrebbe leggere su isnumeric documentazione, per essere sicuri che restituisce i risultati che vi aspettate. (vedi commenti qui sotto).

    • ISNUMERIC() è spesso il sbagliato funzione, in quanto risponde a una domanda che nessuno ha mai chiesto. Non ho mai trovato nessuno che vuole trattare tutte le seguenti stringhe come “numerico”: '$','£','1d6','1,0.0,5', ecc…
    • Indicato, le OP bisogno di prendere in considerazione questo. Grazie per l’aggiunta.

Lascia un commento