2012-07-05 12 views
13

Próbuję dowiedzieć się, jak napisać instrukcję SQL, która pobierze pola, w których ciąg nie ma długości 12 znaków. Chcę pobrać ciąg znaków, jeśli ma 10 znaków.określa długość ciągu tekstowego DB2

Jaką funkcję można wykonać w DB2?

Pomyślałem, że to coś takiego, ale nie mogę na nim nic znaleźć.
select * from table where not length(fieldName, 12)

+0

Wait - chcesz chwycić _rows_ gdzie dane specyficzne ** A ** kolumna („pole”) zawiera ma długość 10 znaków lub chcesz chwycić ** nieznany * * kolumny dla wszystkich wierszy, w których wszystkie wartości w kolumnie (lub nazwa kolumny) mają 10 znaków? –

+0

Chcę pobrać wszystkie wiersze z kolumny numeru identyfikacyjnego. Niektóre numery id mają długość 10 cyfr, niektóre 9, a niektóre 12. Chcę wszystkie oprócz 12 cyfr. – Frantumn

+0

Czy kolumna jest rzeczywiście typem liczbowym, czy też używasz znaków numerycznych w identyfikatorze? Jeśli w rzeczywistości jest to kolumna numeryczna, po prostu wykonaj proste porównanie numeryczne. Jeśli jest to ciąg zawierający cyfry, nie miej zera wiodącego ... –

Odpowiedz

21

To będzie chwycić rekordy ze strun (w kolumnie fieldName), które są 10 znaków:

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

Sprawdź również: http://www.ibm.com/developerworks/data/library/techarticle/dm-0705nair/ - określenie długości ciągu może być czasami trudne. –

22

z podobnych pytanie DB2 - find and compare the lentgh of the value in a table field - dodaj RTRIM od DŁUGOŚĆ powróci długość definicji kolumny. To powinno być poprawne:

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

To działa! Otrzymuje rzeczywistą długość ciągu, tak jak żądane OP, a nie długość kolumny. –

+1

Ta odpowiedź jest poprawna – numsu