2010-10-04 17 views
7

Estoy tratando de insertar espacios finales en una columna VARCHAR (50) y la inserción de SQL parece estar cortándolos. Aquí está mi código:Inserte un espacio final en una columna VARCHAR de SQL Server

create table #temp (field varchar(10)); 
insert into #temp select ' '; 
select LEN(field) from #temp; 

Desafortunadamente, esto devuelve una longitud de cero, es decir, el '' se insertó como un ''. Necesito un espacio en blanco para insertar en esta columna, ¿alguna idea?

Respuesta

11

Use DATALENGTH, no LEN, porque LEN no procesa espacios.

Tome esta cadena de longitud cero, por ejemplo:

SELECT LEN(' ') AS len, 
     DATALENGTH(' ') AS datalength 

Resultados:

len datalength 
----------------- 
0  1 
+0

LEN interpreta "arrastra" espacios como una cadena de longitud cero :) – Thakur

+2

@Aamod Thakur: una cadena de longitud cero no tiene caracteres a seguir;) –

+0

lol .... +1 para eso; D – Thakur

1

Es mejor que también tenga en cuenta que SQL Server sigue ANSI/ISO SQL-92 rellenando las cadenas de caracteres utilizadas en las comparaciones para que sus longitudes coincidan antes de compararlas. Por lo tanto, es posible que desee utilizar el predicado LIKE para las comparaciones [1]

[1]
Cómo compara SQL Server cadenas con espacios finales
http://support.microsoft.com/kb/316626

Cuestiones relacionadas