Eliminar fila con datos NULL

12/09/2005 - 15:37 por Erick Sanchez | Informe spam
Tengo una tabla que posee algunos campos NULL y deseo eliminar los mismos
pero eh intentado y para nada se afectan dichas filas.
Tabla1

Zona Codigo Fecha
NULL NULL 20050131
NULL NULL 20050201
25 25632 20050201

El query que estoy utilizando y no me da resultado es


delete from Fact_Cred where zona = null or codigo = NULL

Gracias

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
12/09/2005 - 15:47 | Informe spam
Erick,

Para comparaciones con el valor NULL, debes usar "expresion is null" o
"expresion is not null", donde expresion puede ser desde una columna hasta
una variable. Cualquier otra comparacion y / o operacion con NULL dara como
resultado NULL.

delete from Fact_Cred where zona = null or codigo = NULL



delete Fact_Cred
where zona is null or codigo is NULL
go

Esto puede cambiarse si usas el seteo "set ansi_nulls off", pero no lo
recomiendo del todo, pues puede traer resultados inesperados como los que se
exponen en el siguiente hilo.

A NULL Puzzl
http://groups.google.com/group/micr...&hl=en


AMB

"Erick Sanchez" wrote:

Tengo una tabla que posee algunos campos NULL y deseo eliminar los mismos
pero eh intentado y para nada se afectan dichas filas.
Tabla1

Zona Codigo Fecha
NULL NULL 20050131
NULL NULL 20050201
25 25632 20050201

El query que estoy utilizando y no me da resultado es


delete from Fact_Cred where zona = null or codigo = NULL

Gracias



Respuesta Responder a este mensaje
#2 Maxi
12/09/2005 - 15:47 | Informe spam
Debes usar Is null


Salu2
Maxi


"Erick Sanchez" escribió en el mensaje
news:
Tengo una tabla que posee algunos campos NULL y deseo eliminar los mismos
pero eh intentado y para nada se afectan dichas filas.
Tabla1

Zona Codigo Fecha
NULL NULL 20050131
NULL NULL 20050201
25 25632 20050201

El query que estoy utilizando y no me da resultado es


delete from Fact_Cred where zona = null or codigo = NULL

Gracias


Respuesta Responder a este mensaje
#3 Salvador Ramos
12/09/2005 - 15:47 | Informe spam
Hola,
Hazlo con IS NULL

delete from Fact_Cred where zona is null or codigo is null

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Erick Sanchez" escribió en el mensaje
news:
Tengo una tabla que posee algunos campos NULL y deseo eliminar los mismos
pero eh intentado y para nada se afectan dichas filas.
Tabla1

Zona Codigo Fecha
NULL NULL 20050131
NULL NULL 20050201
25 25632 20050201

El query que estoy utilizando y no me da resultado es


delete from Fact_Cred where zona = null or codigo = NULL

Gracias


Respuesta Responder a este mensaje
#4 Nery Gonzalez
12/09/2005 - 21:26 | Informe spam
He aquí otra alternativa

Delete From Fact_Cred Where IsNull(zona, -1) < 0 Or IsNull(codigo, -1) < 0


"Erick Sanchez" escribió en el mensaje
news:
Tengo una tabla que posee algunos campos NULL y deseo eliminar los mismos
pero eh intentado y para nada se afectan dichas filas.
Tabla1

Zona Codigo Fecha
NULL NULL 20050131
NULL NULL 20050201
25 25632 20050201

El query que estoy utilizando y no me da resultado es


delete from Fact_Cred where zona = null or codigo = NULL

Gracias


Respuesta Responder a este mensaje
#5 Alejandro Mesa
12/09/2005 - 22:20 | Informe spam
Nery,

Es verdad que es otra alternativa, pero si la tabla tiene un indice asociado
por la columna [zona], sql server no hara una operacion de "index seek" que
es la mas rapida, debisdo a que al utlizar formulas o expresiones sobre la
columna del indice, sql server deja de reconocer esa expresion como un
argumento de busqueda.

ejemplo:

use northwind
go

set showplan_text on
go

select
*
from
dbo.orders
where
shippeddate is null

select
*
from
dbo.orders
where
isnull(shippeddate, -1) < 0
go

set showplan_text off
go

Result:

StmtText


select
*
from
dbo.orders
where
shippeddate is null

(1 row(s) affected)

StmtText

-
|--Bookmark Lookup(BOOKMARK:([Bmk1000]),
OBJECT:([Northwind].[dbo].[Orders]) WITH PREFETCH)
|--Index Seek(OBJECT:([Northwind].[dbo].[Orders].[ShippedDate]),
SEEK:([Orders].[ShippedDate]=NULL) ORDERED FORWARD)

(2 row(s) affected)

StmtText
-

select
*
from
dbo.orders
where
isnull(shippeddate, -1) < 0

(1 row(s) affected)

StmtText


|--Bookmark Lookup(BOOKMARK:([Bmk1000]),
OBJECT:([Northwind].[dbo].[Orders]) WITH PREFETCH)
|--Index Scan(OBJECT:([Northwind].[dbo].[Orders].[ShippedDate]),
WHERE:(isnull([Orders].[ShippedDate], 'Dec 31 1899 12:00AM')<'Jan 1 1900
12:00AM'))

(2 row(s) affected)


fijate que en la primaera sentencia, sql server escoje hacer un "index seek"
en el indice "[Northwind].[dbo].[Orders].[ShippedDate]", mientras en la
segunda, sql server escoje hacer un "index scan".


AMB

"Nery Gonzalez" wrote:

He aquí otra alternativa

Delete From Fact_Cred Where IsNull(zona, -1) < 0 Or IsNull(codigo, -1) < 0


"Erick Sanchez" escribió en el mensaje
news:
> Tengo una tabla que posee algunos campos NULL y deseo eliminar los mismos
> pero eh intentado y para nada se afectan dichas filas.
> Tabla1
>
> Zona Codigo Fecha
> NULL NULL 20050131
> NULL NULL 20050201
> 25 25632 20050201
>
> El query que estoy utilizando y no me da resultado es
>
>
> delete from Fact_Cred where zona = null or codigo = NULL
>
> Gracias
>
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida