Obtener campo de una tabla que empiecen por...

07/09/2006 - 18:02 por Carlos Gómez | Informe spam
SQLServer 2005 Express
Necesito realizar una consulta que me devuelva las filas de una tabla
cuyo uno de los campos empiece por una letra:
Esto sería para la letra 'A'
SELECT * FROM Tabla1 WHERE Tabla1.Campo1 LIKE 'A%'

Mi problema es -parecido- :

Necesito obtener las filas que no empiecen por letra es decir que
comiencen con un número o cualquier otro caracter.
Así funciona en un principio:

SELECT * FROM Tabla1 WHERE Tabla1.Campo1>=' ' AND Tabla1.Campo1<'A'
pero me parece un tanto chapucero, porque además no estoy seguro que
funcione para cualquier caracter por lo siguiente:

Si creo el procedimiento almacenado:
CREATE PROCEDURE FiltroLetra
@Inicio CHAR,
@Fin CHAR
AS
BEGIN
SELECT * FROM Tabla1 WHERE Tabla1.Campo1>=@Inicio AND
Tabla1.Campo1<@Fin
END

y desde .NET llamo al procedimiento con los parámetros:
@Inicio = 'A'
@Fin = 'B'
Funciona y devuelve los que comienzan por A (que es lo deseado)

Para
@Inicio = ' ' (caracter espacio : ASCII2)
@Fin = 'A'
Aparentemente funciona y devuelve los que tengo que empiezan por numero
u otro caracter que no sea una letra

Pero, si uso los siguientes valores:
@Inicio = 'Z'
@Fin = 'ÿ' (valor ASCII 255)
No me devuelve ninguna fila, aunque existen filas que empiezan por Z





Hay en T-SQL algo previsto para mi problema?
 

Leer las respuestas

#1 jcac
07/09/2006 - 19:18 | Informe spam
Podrias utilizar esto, no se si sea lo mas factible pero funciona

Select * From Tabla1 t Where not exists (select campo1 from tabla1 where
campo1 = t.campo1 and campo1 like 'A%')

Saludos

"Carlos Gómez" escribió en el mensaje
news:
SQLServer 2005 Express
Necesito realizar una consulta que me devuelva las filas de una tabla
cuyo uno de los campos empiece por una letra:
Esto sería para la letra 'A'
SELECT * FROM Tabla1 WHERE Tabla1.Campo1 LIKE 'A%'

Mi problema es -parecido- :

Necesito obtener las filas que no empiecen por letra es decir que
comiencen con un número o cualquier otro caracter.
Así funciona en un principio:

SELECT * FROM Tabla1 WHERE Tabla1.Campo1>=' ' AND Tabla1.Campo1<'A'
pero me parece un tanto chapucero, porque además no estoy seguro que
funcione para cualquier caracter por lo siguiente:

Si creo el procedimiento almacenado:
CREATE PROCEDURE FiltroLetra
@Inicio CHAR,
@Fin CHAR
AS
BEGIN
SELECT * FROM Tabla1 WHERE Tabla1.Campo1>=@Inicio AND
Tabla1.Campo1<@Fin
END

y desde .NET llamo al procedimiento con los parámetros:
@Inicio = 'A'
@Fin = 'B'
Funciona y devuelve los que comienzan por A (que es lo deseado)

Para
@Inicio = ' ' (caracter espacio : ASCII2)
@Fin = 'A'
Aparentemente funciona y devuelve los que tengo que empiezan por numero
u otro caracter que no sea una letra

Pero, si uso los siguientes valores:
@Inicio = 'Z'
@Fin = 'ÿ' (valor ASCII 255)
No me devuelve ninguna fila, aunque existen filas que empiezan por Z





Hay en T-SQL algo previsto para mi problema?

Preguntas similares