2012-07-05 24 views
13

Sto cercando di scoprire come scrivere un'istruzione SQL che acquisirà campi in cui la stringa non ha 12 caratteri. Voglio solo prendere la stringa se sono 10 caratteri.determinare la lunghezza della stringa di testo DB2

Quale funzione è possibile eseguire in DB2?

Ho pensato che sarebbe stato qualcosa di simile, ma non riesco a trovare nulla su di esso.
select * from table where not length(fieldName, 12)

+0

Wait - vuoi afferrare _rows_ dove i dati una specifica colonna ** ** ('campo') contiene è lungo 10 caratteri, o vuoi per afferrare ** sconosciuto * * colonne per tutte le righe, dove tutti i valori nella colonna (o il nome della colonna) sono lunghi 10 caratteri? –

+0

Voglio prendere tutte le righe da una colonna del numero di identificazione. Alcuni numeri di identificazione sono lunghi 10 cifre, alcuni sono 9 e alcuni sono 12. Voglio tutti tranne i numeri di 12 cifre. – Frantumn

+0

La colonna è effettivamente un tipo numerico o stai utilizzando caratteri numerici nell'Id? Se in realtà è una colonna numerica, basta fare un semplice confronto numerico. Se si tratta di una stringa contenente cifre, si prega di non avere zeri iniziali ... –

risposta

21

Ciò afferrare i record con le stringhe (nella colonna nomeCampo) che sono 10 caratteri:

select * from table where length(fieldName)=10 
+0

Controllare anche questo: http://www.ibm.com/developerworks/data/library/techarticle/dm-0705nair/ - a volte la determinazione della lunghezza della stringa potrebbe essere complicata. –

22

Da domanda simile DB2 - find and compare the lentgh of the value in a table field - aggiungere RTRIM dal LUNGHEZZA tornerà lunghezza della definizione di colonna. Questo dovrebbe essere corretto:

select * from table where length(RTRIM(fieldName))=10 
+1

Questo è il trucco! Ottiene la lunghezza effettiva della stringa come l'OP richiesto e non la lunghezza della colonna. –

+1

Questa risposta è quella giusta – numsu

Problemi correlati