2012-07-05 43 views
13

Estoy tratando de averiguar cómo escribir una instrucción SQL que capture campos donde la cadena no tiene 12 caracteres. Solo quiero agarrar la cadena si son 10 caracteres.determinar la longitud de la cadena de texto de DB2

¿Qué función puede hacer esto en DB2?

Pensé que sería algo como esto, pero no puedo encontrar nada en él.
select * from table where not length(fieldName, 12)

+0

Espera, ¿quieres tomar _rows_ donde los datos de una columna ** específica ** ('campo') contiene 10 caracteres o quieres obtener ** desconocido * * columnas para todas las filas, donde todos los valores en la columna (o el nombre de la columna) tienen 10 caracteres de largo? –

+0

Quiero tomar todas las filas de una columna de número de identificación. Algunos números de identificación tienen 10 dígitos de longitud, algunos son 9 y algunos tienen 12. Quiero todos, excepto los números de 12 dígitos. – Frantumn

+0

¿La columna es realmente un tipo numérico o está utilizando caracteres numéricos en el Id? Si en realidad es una columna numérica, simplemente haga una comparación numérica simple. Si es una cadena que contiene dígitos, no tenga ceros a la izquierda ... –

Respuesta

21

Esto se agarra registros con cuerdas (en la columna de la fieldName) que son 10 caracteres de longitud:

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

También verifique esto: http://www.ibm.com/developerworks/data/library/techarticle/dm-0705nair/ - la determinación de la longitud de la cadena puede ser difícil algunas veces. –

22

Desde pregunta similar DB2 - find and compare the lentgh of the value in a table field - añadir RTRIM Dado que la longitud volverá longitud de definición de columna. Esto debería ser correcto:

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

¡Esto hace el truco! Obtiene la longitud real de la cadena como se pidió OP y no la longitud de la columna. –

+1

Esta respuesta es la correcta – numsu

Cuestiones relacionadas