una reemplazar quitar primer parte intermedios extraer espacios caracter cadena buscar blanco sql sql-server sql-server-2008 string

reemplazar - SQL Server 2008: cómo encontrar espacios finales



quitar espacios en blanco sql (11)

Aquí hay otra alternativa para espacios finales.

DECLARE @VALUE VARCHAR(50) = NULL DECLARE @VALUE VARCHAR(50) = '' '' IF ((@VALUE IS NOT NULL) AND (LTRIM(RTRIM(@VALUE)) != '''')) BEGIN SELECT ''TRUE'' END ELSE BEGIN SELECT ''FALSE'' END

¿Cómo puedo encontrar todos los valores de columna en una columna que tienen espacios finales? Para los espacios principales sería simplemente

select col from table where substring(col,1,1) = '' '';


Aquí hay una alternativa para buscar registros con espacios en blanco iniciales o finales, incluidas pestañas, etc.

SELECT * FROM tbl WHERE NOT TRIM(col) = col


Esto es lo que funcionó para mí:

select * from table_name where column_name not like RTRIM(column_name)

Esto le dará todos los registros que tienen espacios finales.

Si desea obtener los registros que tienen espacios iniciales o finales, puede usar esto:

select * from table_name where column_name not like LTRIM(RTRIM(column_name))


Hay algunas maneras diferentes de hacer esto ...

Mi opción favorita, suponiendo que su intención es eliminar cualquier espacio inicial y / o final, es ejecutar lo siguiente, que creará dinámicamente el T-SQL para UPDATE todas las columnas con un espacio no deseado a su valor recortado:

SELECT ''UPDATE [<DatabaseName>].[dbo].[''+TABLE_NAME+''] SET [''+COLUMN_NAME+'']=LTRIM(RTRIM([''+COLUMN_NAME+''])) WHERE [''+COLUMN_NAME+'']=LTRIM(RTRIM([''+COLUMN_NAME+'']));''+CHAR(13) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE ''<TableName>%'' AND DATA_TYPE!=''date'' ORDER BY TABLE_NAME,COLUMN_NAME

Si realmente necesita identificarlos, intente con una de estas consultas:

SELECT * FROM [database].[schema].[table] WHERE [col1]!=LTRIM(RTRIM([col1]))

SQL más dinámico:

SELECT ''SELECT ''''[''+TABLE_NAME+''].[''+COLUMN_NAME+'']'''',* FROM [<your database name>].[dbo].[''+TABLE_NAME+''] WHERE [''+COLUMN_NAME+''] LIKE ''''% '''' OR [''+COLUMN_NAME+''] LIKE '''' %''''; GO '' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE ''<filter table name as desired>%'' AND DATA_TYPE!=''date''


Los espacios se ignoran en SQL Server, así que para mí incluso el espacio principal no funcionaba.

select col from table where substring(col,1,1) = '' ''

no funcionará si solo hay un espacio ('''') o en blanco ('''')

así que ideé lo siguiente:

select * from [table] where substring(REPLACE(col, '' '', ''#''),1,1) = ''#''


Podemos intentar subrayar para encontrar las entradas que son espacios en blanco, aunque no es una solución precisa como usar ''%%'' o '''', pero pude encontrar entradas que son espacios en blanco.

seleccione col_name de la tabla donde col_name like ''_''


Prueba esto:

UPDATE Battles SET name = CASE WHEN (LEN(name+''a'')-1)>LEN(RTRIM(name)) THEN REPLICATE('' '', (LEN(name+''a'')-1)- LEN(RTRIM(name)))+RTRIM(name) ELSE name END


Puede encontrar espacios finales con LIKE :

SELECT col FROM tbl WHERE col LIKE ''% ''


SQL Server 2005:

select col from tbl where right(col, 1) = '' ''

Como una demostración:

select case when right(''said Fred'', 1) = '' '' then 1 else 0 end as NoTrail, case when right(''said Fred '', 1) = '' '' then 1 else 0 end as WithTrail

devoluciones

NoTrail WithTrail 0 1


Un método muy simple es usar la función LEN. LEN recortará los espacios finales pero no los espacios anteriores, por lo que si su LEN () es diferente de su LEN (REVERSE ()) obtendrá todas las filas con espacios finales:

select col from table where LEN(col) <> LEN(REVERSE(col));

esto también se puede usar para calcular cuántos espacios tiene para una lógica más avanzada.


SELECT * FROM tbl WHERE LEN(col) != DATALENGTH(col)

Debería funcionar también