vacios vacio por mostrar entre diferencia convertir cero campos campo cambiar sql-server null is-empty

sql-server - por - if campo vacio sql



¿Cómo convertir espacios vacíos en valores nulos usando SQL Server? (7)

Tengo una tabla y las columnas en esta tabla contienen espacios vacíos para algunos registros. Ahora necesito mover los datos a otra tabla y reemplazar los espacios vacíos con un valor NULL .

Intenté usar:

REPLACE(ltrim(rtrim(col1)),'' '',NULL)

pero no funciona. Convertirá todos los valores de col1 en NULL . Solo quiero convertir a NULL aquellos valores que tienen espacios vacíos.


Tal vez algo como esto?

UPDATE [MyTable] SET [SomeField] = NULL WHERE [SomeField] is not NULL AND LEN(LTRIM(RTRIM([SomeField]))) = 0


Una declaración de caso debería ser la solución al seleccionar de su tabla fuente:

CASE WHEN col1 = '' '' THEN NULL ELSE col1 END col1

Además, una cosa a tener en cuenta es que su LTRIM y RTRIM reducen el valor de un espacio ('''') a espacio en blanco (''''). Si necesita eliminar el espacio en blanco, la declaración del caso debe modificarse de manera adecuada:

CASE WHEN LTRIM(RTRIM(col1)) = '''' THEN NULL ELSE LTRIM(RTRIM(col1)) END col1


aquí hay un regex para ti.

update table set col1=null where col1 not like ''%[a-z,0-9]%''

esencialmente encuentra cualquier columna que no tenga letras o números en ellos y lo establece en nulo. podría tener que actualizar si tiene columnas con solo caracteres especiales.


¿Has intentado esto?

UPDATE table SET col1 = NULL WHERE col1 = ''''

Como señalan los comentaristas, no tiene que hacer ltrim() o rtrim() , y las columnas NULL no coincidirán con '''' .


SQL Server ignora los espacios en blanco al comparar cadenas, por lo que '''' = ''''. Solo usa la siguiente consulta para tu actualización

UPDATE table SET col1 = NULL WHERE col1 = ''''

Los valores NULL en su tabla se mantendrán NULL, y col1s con cualquier número en los caracteres solo espacio se cambiarán a NULL.

Si desea hacerlo durante su copia de una tabla a otra, use esto:

INSERT INTO newtable ( col1, othercolumn ) SELECT NULLIF(col1, ''''), othercolumn FROM table


NULLIF un problema similar usando la función NULLIF :

UPDATE table SET col1 = NULLIF(col1, '''')

De la referencia de T-SQL:

NULLIF devuelve la primera expresión si las dos expresiones no son iguales. Si las expresiones son iguales, NULLIF devuelve un valor nulo del tipo de la primera expresión.


Este código genera algunos SQL que pueden lograr esto en cada tabla y columna en la base de datos:

SELECT ''UPDATE [''+T.TABLE_SCHEMA+''].['' + T.TABLE_NAME + ''] SET ['' + COLUMN_NAME + ''] = NULL WHERE ['' + COLUMN_NAME + ''] = '''''''''' FROM INFORMATION_SCHEMA.columns C INNER JOIN INFORMATION_SCHEMA.TABLES T ON C.TABLE_NAME=T.TABLE_NAME AND C.TABLE_SCHEMA=T.TABLE_SCHEMA WHERE DATA_TYPE IN (''char'',''nchar'',''varchar'',''nvarchar'') AND C.IS_NULLABLE=''YES'' AND T.TABLE_TYPE=''BASE TABLE''