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