Like '[^A-Z]'

28/01/2005 - 16:00 por Luis Cejas | Informe spam
Buenas tengan todos
Resulta que utilizo el Like '[^A-Z]' para validar una variable de un solo
carácter, todo resultó bueno hasta que a un usuario se le ocurrió asignarle
a la variable el valor 'Ý' y para asombro mío la tomó como 'Y'...
Necesito validar SOLO las mayúsculas 'limpias', sin acentos ni diéresis ni
nada extraño
Me imagino que es cuestión de setear los UNICODE, el problema es que no se
como
Estoy con SQL 2000 SP3 (a punto de tirarle el SP4 Beta) bajo un Server 2003.

Gracias a todos
Luis

Preguntas similare

Leer las respuestas

#6 Luis Cejas
28/01/2005 - 19:29 | Informe spam
Perdon pero no es problema de Tabla, a nivel variable es el asunto,
igualmente hice una nueva tabla con el collate apropiado y me hace lo mismo.
El asunto está en el LIKE y en la forma que genera el rango 'A-Z' puestro
que si pongo letra por letra SI hace lo esperado

declare @cLetra as Char(1)

Set @cLetra = 'Ú'

If @cLetra collate Modern_Spanish_CI_AI Like '[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]'
Select 'Error'
Else
Select 'Todo OK'


Fijate que ahí si va a ERROR, pero si pongo '[^A-Z]' va a OK
Creí que con un simple 'SET .' en la cabecera de los StoreProcedure
solucionaba el problema pero veo que voy a tener que fijarme en todos los
LIKE que tengo.






"Herman Shiraly Camargo Bustos" wrote in message
news:vVtKd.37739$
Debes cambiarle la intercalación a la DB por
Moderm_Spanish_CI_AS

AS (Distingue las tildes)

"Luis Cejas" escribió en el mensaje
news:#
> Salvador,
> No es necesario l tabla, intento esto mismo y me genera el problema:
>
> declare @cLetra Char(1)
>
> Set @cLetra = 'Ú'
>
> If @cLetra Like '[^A-Z]'
> Select 'Error'
> Else
> Select 'Todo OK'
>
>
> Tendría que entrar en 'Error' y sin embargo sigue como 'OK'
> Gracias,
> Luis
>
>
> "Salvador Ramos" wrote in message
> news:
> > No consigo reproducir el problema.
> > Puedes pasar el script de creación de tu tabla con las constraints, y
las
> > insert que te dan el problema, para hacer unas pruebas ?
> >
> >
> > Un saludo
> > Salvador Ramos
> > Murcia - España
> > [Microsoft MVP SQL Server]
> > www.helpdna.net (información sobre SQL server, Windows DNA y .NET)
> >
> > "Luis Cejas" escribió en el mensaje
> > news:%
> > > En la Tabla tengo Moderm_Spanish_CI_AI
> > >
> > > Lo estoy probando desde el Query Analyzer
> > >
> > >
> > > "Salvador Ramos" wrote in
message
> > > news:
> > >> Qué collation tienes ? Estás utilizando distinción si van


acentuadas
?
> > >>
> > >> Un saludo
> > >> Salvador Ramos
> > >> Murcia - España
> > >> [Microsoft MVP SQL Server]
> > >> www.helpdna.net (información sobre SQL server, Windows DNA y .NET)
> > >>
> > >> "Luis Cejas" escribió en el mensaje
> > >> news:
> > >> > Buenas tengan todos
> > >> > Resulta que utilizo el Like '[^A-Z]' para validar una variable de
un
> > > solo
> > >> > carácter, todo resultó bueno hasta que a un usuario se le ocurrió
> > >> > asignarle
> > >> > a la variable el valor 'Ý' y para asombro mío la tomó como 'Y'...
> > >> > Necesito validar SOLO las mayúsculas 'limpias', sin acentos ni
> diéresis
> > > ni
> > >> > nada extraño
> > >> > Me imagino que es cuestión de setear los UNICODE, el problema es
que
> no
> > > se
> > >> > como
> > >> > Estoy con SQL 2000 SP3 (a punto de tirarle el SP4 Beta) bajo un
> Server
> > >> > 2003.
> > >> >
> > >> > Gracias a todos
> > >> > Luis
> > >> >
> > >> >
> > >>
> > >>
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#7 Víctor Rafael Bocanegra Arias
28/01/2005 - 20:08 | Informe spam
Lo que comenta Herman es correcto deberias hacer esto:

declare @cLetra as Char(1)

Set @cLetra = 'Ú'

If @cLetra collate Modern_Spanish_CI_AS Like '[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]'
Select 'Error'
Else
Select 'Todo OK'

mira el collate... al final es AS no AI

Salu2

Victor Rafael Bocanegra Arias
Lima, Peru

"Luis Cejas" escribió en el mensaje
news:

Perdon pero no es problema de Tabla, a nivel variable es el asunto,
igualmente hice una nueva tabla con el collate apropiado y me hace lo


mismo.
El asunto está en el LIKE y en la forma que genera el rango 'A-Z' puestro
que si pongo letra por letra SI hace lo esperado

declare @cLetra as Char(1)

Set @cLetra = 'Ú'

If @cLetra collate Modern_Spanish_CI_AI Like


'[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]'
Select 'Error'
Else
Select 'Todo OK'


Fijate que ahí si va a ERROR, pero si pongo '[^A-Z]' va a OK
Creí que con un simple 'SET .' en la cabecera de los StoreProcedure
solucionaba el problema pero veo que voy a tener que fijarme en todos los
LIKE que tengo.






"Herman Shiraly Camargo Bustos" wrote in message
news:vVtKd.37739$
> Debes cambiarle la intercalación a la DB por
> Moderm_Spanish_CI_AS
>
> AS (Distingue las tildes)
>
> "Luis Cejas" escribió en el mensaje
> news:#
> > Salvador,
> > No es necesario l tabla, intento esto mismo y me genera el problema:
> >
> > declare @cLetra Char(1)
> >
> > Set @cLetra = 'Ú'
> >
> > If @cLetra Like '[^A-Z]'
> > Select 'Error'
> > Else
> > Select 'Todo OK'
> >
> >
> > Tendría que entrar en 'Error' y sin embargo sigue como 'OK'
> > Gracias,
> > Luis
> >
> >
> > "Salvador Ramos" wrote in


message
> > news:
> > > No consigo reproducir el problema.
> > > Puedes pasar el script de creación de tu tabla con las constraints,


y
> las
> > > insert que te dan el problema, para hacer unas pruebas ?
> > >
> > >
> > > Un saludo
> > > Salvador Ramos
> > > Murcia - España
> > > [Microsoft MVP SQL Server]
> > > www.helpdna.net (información sobre SQL server, Windows DNA y .NET)
> > >
> > > "Luis Cejas" escribió en el mensaje
> > > news:%
> > > > En la Tabla tengo Moderm_Spanish_CI_AI
> > > >
> > > > Lo estoy probando desde el Query Analyzer
> > > >
> > > >
> > > > "Salvador Ramos" wrote in
> message
> > > > news:
> > > >> Qué collation tienes ? Estás utilizando distinción si van
acentuadas
> ?
> > > >>
> > > >> Un saludo
> > > >> Salvador Ramos
> > > >> Murcia - España
> > > >> [Microsoft MVP SQL Server]
> > > >> www.helpdna.net (información sobre SQL server, Windows DNA y


.NET)
> > > >>
> > > >> "Luis Cejas" escribió en el mensaje
> > > >> news:
> > > >> > Buenas tengan todos
> > > >> > Resulta que utilizo el Like '[^A-Z]' para validar una variable


de
> un
> > > > solo
> > > >> > carácter, todo resultó bueno hasta que a un usuario se le


ocurrió
> > > >> > asignarle
> > > >> > a la variable el valor 'Ý' y para asombro mío la tomó como


'Y'...
> > > >> > Necesito validar SOLO las mayúsculas 'limpias', sin acentos ni
> > diéresis
> > > > ni
> > > >> > nada extraño
> > > >> > Me imagino que es cuestión de setear los UNICODE, el problema


es
> que
> > no
> > > > se
> > > >> > como
> > > >> > Estoy con SQL 2000 SP3 (a punto de tirarle el SP4 Beta) bajo un
> > Server
> > > >> > 2003.
> > > >> >
> > > >> > Gracias a todos
> > > >> > Luis
> > > >> >
> > > >> >
> > > >>
> > > >>
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#8 Luis Cejas
28/01/2005 - 20:30 | Informe spam
Victor, yo no es que estoy en contra de usar el Collate, es mas... así tengo
en la tabla... el problema es el LIKE '[^A-Z]' no hace caso al COLLATE, si
te fijas, cambiá el Like y rw darás cuenta que trata todo por igual, con o
sin collate


"Víctor Rafael Bocanegra Arias" wrote in
message news:
Lo que comenta Herman es correcto deberias hacer esto:

declare @cLetra as Char(1)

Set @cLetra = 'Ú'

If @cLetra collate Modern_Spanish_CI_AS Like


'[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]'
Select 'Error'
Else
Select 'Todo OK'

mira el collate... al final es AS no AI

Salu2

Victor Rafael Bocanegra Arias
Lima, Peru

"Luis Cejas" escribió en el mensaje
news:
>
> Perdon pero no es problema de Tabla, a nivel variable es el asunto,
> igualmente hice una nueva tabla con el collate apropiado y me hace lo
mismo.
> El asunto está en el LIKE y en la forma que genera el rango 'A-Z'


puestro
> que si pongo letra por letra SI hace lo esperado
>
> declare @cLetra as Char(1)
>
> Set @cLetra = 'Ú'
>
> If @cLetra collate Modern_Spanish_CI_AI Like
'[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]'
> Select 'Error'
> Else
> Select 'Todo OK'
>
>
> Fijate que ahí si va a ERROR, pero si pongo '[^A-Z]' va a OK
> Creí que con un simple 'SET .' en la cabecera de los StoreProcedure
> solucionaba el problema pero veo que voy a tener que fijarme en todos


los
> LIKE que tengo.
>
>
>
>
>
>
> "Herman Shiraly Camargo Bustos" wrote in message
> news:vVtKd.37739$
> > Debes cambiarle la intercalación a la DB por
> > Moderm_Spanish_CI_AS
> >
> > AS (Distingue las tildes)
> >
> > "Luis Cejas" escribió en el mensaje
> > news:#
> > > Salvador,
> > > No es necesario l tabla, intento esto mismo y me genera el problema:
> > >
> > > declare @cLetra Char(1)
> > >
> > > Set @cLetra = 'Ú'
> > >
> > > If @cLetra Like '[^A-Z]'
> > > Select 'Error'
> > > Else
> > > Select 'Todo OK'
> > >
> > >
> > > Tendría que entrar en 'Error' y sin embargo sigue como 'OK'
> > > Gracias,
> > > Luis
> > >
> > >
> > > "Salvador Ramos" wrote in
message
> > > news:
> > > > No consigo reproducir el problema.
> > > > Puedes pasar el script de creación de tu tabla con las


constraints,
y
> > las
> > > > insert que te dan el problema, para hacer unas pruebas ?
> > > >
> > > >
> > > > Un saludo
> > > > Salvador Ramos
> > > > Murcia - España
> > > > [Microsoft MVP SQL Server]
> > > > www.helpdna.net (información sobre SQL server, Windows DNA y .NET)
> > > >
> > > > "Luis Cejas" escribió en el mensaje
> > > > news:%
> > > > > En la Tabla tengo Moderm_Spanish_CI_AI
> > > > >
> > > > > Lo estoy probando desde el Query Analyzer
> > > > >
> > > > >
> > > > > "Salvador Ramos" wrote in
> > message
> > > > > news:
> > > > >> Qué collation tienes ? Estás utilizando distinción si van
> acentuadas
> > ?
> > > > >>
> > > > >> Un saludo
> > > > >> Salvador Ramos
> > > > >> Murcia - España
> > > > >> [Microsoft MVP SQL Server]
> > > > >> www.helpdna.net (información sobre SQL server, Windows DNA y
.NET)
> > > > >>
> > > > >> "Luis Cejas" escribió en el mensaje
> > > > >> news:
> > > > >> > Buenas tengan todos
> > > > >> > Resulta que utilizo el Like '[^A-Z]' para validar una


variable
de
> > un
> > > > > solo
> > > > >> > carácter, todo resultó bueno hasta que a un usuario se le
ocurrió
> > > > >> > asignarle
> > > > >> > a la variable el valor 'Ý' y para asombro mío la tomó como
'Y'...
> > > > >> > Necesito validar SOLO las mayúsculas 'limpias', sin acentos


ni
> > > diéresis
> > > > > ni
> > > > >> > nada extraño
> > > > >> > Me imagino que es cuestión de setear los UNICODE, el problema
es
> > que
> > > no
> > > > > se
> > > > >> > como
> > > > >> > Estoy con SQL 2000 SP3 (a punto de tirarle el SP4 Beta) bajo


un
> > > Server
> > > > >> > 2003.
> > > > >> >
> > > > >> > Gracias a todos
> > > > >> > Luis
> > > > >> >
> > > > >> >
> > > > >>
> > > > >>
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


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