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?

Preguntas similare

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?
Respuesta Responder a este mensaje
#2 Alejandro Mesa
07/09/2006 - 22:21 | Informe spam
Carlos,

Puedes usar la negacion.

...
where campo1 not like 'A%'

tambien puedes usar otros comodines como:

...
where campo1 like '[^A]%'


AMB


"Carlos Gómez" wrote:

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?


Respuesta Responder a este mensaje
#3 Carlos Gómez
08/09/2006 - 07:10 | Informe spam
Alejandro Mesa ha escrito:

Carlos,

Puedes usar la negacion.

...
where campo1 not like 'A%'

tambien puedes usar otros comodines como:

...
where campo1 like '[^A]%'


AMB



Vamos a ver, lo que pregunto es si hay alguna forma de obtener los
campos que de una tabla cuyo valor no comience por una letra, no una
letra concreta, sino una letra cualquiera:
Si tengo
Tabla1
Campo1 Campo2
1 102fjkf
2 fldsjg
3 *hlgfdf
4 djsslfjs
5 +sfkldjslk
6 ¿slfdllñs
7 jfksdlss

lo que deseo es obtener las filas 1,3, 5 y 6
Respuesta Responder a este mensaje
#4 Alejandro Mesa
08/09/2006 - 14:13 | Informe spam
Carlos,

Si lo quieres para cualquier letra entonces usa el rango de letras en la
clausula "where".

create table dbo.t1 (
Campo1 int not null identity unique,
Campo2 varchar(25)
)
go

insert into dbo.t1(Campo2) values('102fjkf')
insert into dbo.t1(Campo2) values('fldsjg')
insert into dbo.t1(Campo2) values('*hlgfdf')
insert into dbo.t1(Campo2) values('djsslfjs')
insert into dbo.t1(Campo2) values('+sfkldjslk')
insert into dbo.t1(Campo2) values('¿slfdllñs')
insert into dbo.t1(Campo2) values('jfksdlss')
go

select *
from dbo.t1
where campo2 like '[^A-Za-z]%'
go

select *
from dbo.t1
where campo2 not like '[A-Za-z]%'
go

drop table dbo.t1
go


AMB


"Carlos Gómez" wrote:

Alejandro Mesa ha escrito:

> Carlos,
>
> Puedes usar la negacion.
>
> ...
> where campo1 not like 'A%'
>
> tambien puedes usar otros comodines como:
>
> ...
> where campo1 like '[^A]%'
>
>
> AMB

Vamos a ver, lo que pregunto es si hay alguna forma de obtener los
campos que de una tabla cuyo valor no comience por una letra, no una
letra concreta, sino una letra cualquiera:
Si tengo
Tabla1
Campo1 Campo2
1 102fjkf
2 fldsjg
3 *hlgfdf
4 djsslfjs
5 +sfkldjslk
6 ¿slfdllñs
7 jfksdlss

lo que deseo es obtener las filas 1,3, 5 y 6


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