2009-07-28 117 views
6

Me postulo esta declaración:Oracle: cómo eliminar espacios en blanco?

select trim(a),trim(b) from table x; 

A pesar de que utiliza la instrucción de ajuste(), mi salida es el siguiente:

A               B        
___               ____ 
kunjramansingh            smartdude 

El tipo de datos de la columna 'a' y 'b' es varchar2 (255).

Hay una brecha entre los datos de dos salidas. Quiero mostrar los datos sin el espacio en blanco - en un formato como este:

A    B 
___   ______ 
kunjramansinghsmartdude 

¿Cómo puedo hacer esto?

+0

Espera, estamos hablando de los datos devueltos o la pantalla de los resultados de la consulta? SQL * PLUS? – curtisk

+0

Hola curtisk, Estamos hablando de los datos devueltos> –

Respuesta

12
SELECT REGEXP_REPLACE('A B_ __ kunjramansingh smartdude', '\s*', '') 
FROM dual 

--- 
AB___kunjramansinghsmartdude 

Actualizar:

Sólo concatenar cadenas:

SELECT a || b 
FROM mytable 
+0

nice! Acabo de salvar mi día ... – CFNinja

5

Si he entendido bien, esto es lo que quiere

select (trim(a) || trim(b))as combinedStrings from yourTable 
3

Esto suena como un problema de formato de salida ? Si el uso de SQL Plus, utilice el comando COLUMNA así (asumiendo que usted quiere un ancho máximo de visualización de 20 caracteres para cada uno):

column a format a20 
column b format a20 
select a, b from mytable; 
+0

Bueno, ahora lo tiene cubierto, cualquier escenario :) – curtisk

1

SQL Plus dará formato a las columnas para mantener la máxima posible valor, que a su este caso es 255 caracteres.

para confirmar que su salida no contiene realmente esos espacios adicionales, intente esto:

SELECT 
    '/' || TRIM(A) || '/' AS COLUMN_A 
,'/' || TRIM(B) || '/' AS COLUMN_B 
FROM 
    MY_TABLE; 

Si los caracteres '/' se separan de su salida, entonces eso indica que no se trata de espacios, sino algún otro el carácter de espacio en blanco que entró allí (pestañas, por ejemplo). Si ese es el caso, entonces probablemente sea un problema de validación de entrada en alguna parte de su aplicación.

Sin embargo, el escenario más probable es que los caracteres '/' serán, de hecho, tocar el resto de sus cadenas, lo que demuestra que el espacio en blanco es en realidad recortada.

Si desea imprimirlos juntos, la respuesta dada por Quassnoi debería hacerlo.

Si se trata de un problema de visualización, la respuesta dada por Tony Andrews debería funcionar bien.

11

Parece que se está ejecutando la consulta en sqlplus. Sqlplus necesita asegurarse de que haya espacio suficiente en el espacio entre columnas para que se pueda mostrar el tamaño máximo de cadena (255). Por lo general, la solución es utilizar las opciones de formato de columna (Ejecutar antes de la consulta: la columna A de formato A20) para reducir el tamaño máximo de la cadena (líneas que superen esta longitud se mostrará a través de múltiples líneas).

-1

mostrada a continuación consulta reemplazando TABLE_NAME & COLUMN_NAME con sus nombres reales columna de la tabla &:

UPDATE TABLE_NAME SET COLUMN_NAME=TRIM(' ' from COLUMN_NAME); 
3

puede utilizar 'RPAD' en su consulta de selección y especifique el tamaño ...

select rpad(a , 20) , rpad(b, 20) from x ; 

donde el primer parámetro es su nombre de columna y el segundo parámetro es el tamaño con el que desea rellenar.

0

la siguiente manera para asegurarse de que no hay espacios en blanco en su salida:

select first_name || ',' || last_name from table x; 

salida

John, Smith

Jane Doe

1
REPLACE(REPLACE(a.CUST_ADDRESS1,CHR(10),' '),CHR(13),' ') as ADDRESS 
1

Say, tenemos una columna con valores que consta de caracteres alfanuméricos a nd guión bajo solamente. Necesitamos recortar esta columna de todos los espacios, pestañas o cualquier otro carácter blanco. El siguiente ejemplo resolverá el problema. El recortado y el original ambos se muestran para comparar. select '/'||REGEXP_REPLACE(my_column,'[^A-Z,^0-9,^_]','')||'/' my_column,'/'||my_column||'/' from my_table;

0

Si desea reemplazar los espacios en blanco en un valor de columna en particular, se puede utilizar la siguiente secuencia de comandos para hacer el trabajo para usted,

UPDATE TableName TN 
    SET TN.Column_Name = TRIM (TN.Column_Name); 
Cuestiones relacionadas