Filtro óptimo

23/01/2009 - 10:11 por Alhambra Eidos Desarrollo | Informe spam
Hola a todos,

estoy en este caso que me ha tocado mejorar, sin tener mucha experiencia en
sql server; tengo una consulta que utiliza un campo NUMEROEXPEDIENTE de una
tabla Expedientes para filtrar.

es un campo de varchar(9)

almacena valores númericos con este formato AABBZZZZZ,
por ejemplo, valores válidos serían

030800001
020800149

Sin embargo, hay casos que aparecen valores no numéricos: No Asign., No
Asign.1, No Asign.2

El caso que queremos obtener todos los expedientes salvo los que tengan ese
texto (No Asign. etcétera)

Cuál sería la mejor opción para hacerlo ?

se me ocurre where Len(NumeroExpediente) = 9, (len('030800123') = 9) pero
por ejemplo la longitud del texto 'No Asign.' es 9 también.

La condición de filtro sería
Len(NumeroExpediente) = 9 AND NumeroExpediente es Numerico (todos los
caracteres son digitos)

Se podría hacer en Sql server 2005 Express compatibilidad 2000 y que fuera
óptimo, para no ralentizar la consulta ?

Gracias y saludos.
http://www.alhambra-eidos.es/web2005/index.html
www.kiquenet.com/churrosoft
http://www.setbb.com/putainformatic...opic.php?p„3
www.trabajobasura.com/solusoft
 

Leer las respuestas

#1 Carlos Sacristan
23/01/2009 - 11:02 | Informe spam
SELECT ... FROM tabla WHERE numeroExpediente LIKE '[0-9]%'

siempre y cuando exista un índice por el campo NumeroExpediente, SQL Server
podría llegar a usarlo si así lo considera


Un saludo
-
www.navento.com
Servicios de Localización GPS


"Alhambra Eidos Desarrollo" wrote:

Hola a todos,

estoy en este caso que me ha tocado mejorar, sin tener mucha experiencia en
sql server; tengo una consulta que utiliza un campo NUMEROEXPEDIENTE de una
tabla Expedientes para filtrar.

es un campo de varchar(9)

almacena valores númericos con este formato AABBZZZZZ,
por ejemplo, valores válidos serían

030800001
020800149

Sin embargo, hay casos que aparecen valores no numéricos: No Asign., No
Asign.1, No Asign.2

El caso que queremos obtener todos los expedientes salvo los que tengan ese
texto (No Asign. etcétera)

Cuál sería la mejor opción para hacerlo ?

se me ocurre where Len(NumeroExpediente) = 9, (len('030800123') = 9) pero
por ejemplo la longitud del texto 'No Asign.' es 9 también.

La condición de filtro sería
Len(NumeroExpediente) = 9 AND NumeroExpediente es Numerico (todos los
caracteres son digitos)

Se podría hacer en Sql server 2005 Express compatibilidad 2000 y que fuera
óptimo, para no ralentizar la consulta ?

Gracias y saludos.
http://www.alhambra-eidos.es/web2005/index.html
www.kiquenet.com/churrosoft
http://www.setbb.com/putainformatic...opic.php?p„3
www.trabajobasura.com/solusoft

Preguntas similares