Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Combinar n y ñ sql server (https://www.clubdelphi.com/foros/showthread.php?t=92296)

ingmichel 20-09-2017 16:47:42

Combinar n y ñ sql server
 
Saludos, tengo la siguiente nececidad y es que nececito buscar un string aun cuando éste este almacenado con la letra ñ,
por ejemplo si busco el apellido CEDENO y en la base de datos está como CEDEÑO,
me traiga el resultado, y viceversa

Gracias de antemano...

Casimiro Notevi 20-09-2017 17:48:44

Si quieres encontrar 'cedeño', entonces busca 'cedeño'.
Si en la BD está 'cedeno', entonces tendrás que buscar 'cedeno'.

luisgutierrezb 21-09-2017 20:48:27

A lo mejor la función Soundex te puede ayudar, seria cuestión de hacer pruebas
https://docs.microsoft.com/en-us/sql...x-transact-sql

Casimiro Notevi 21-09-2017 22:17:23

Ni siquiera ha dicho qué base de datos está usando.
Si el valor correcto es CEDEÑO, ¿por qué no lo cambias antes en la base de datos en problema solucionado?
Buscas todos los CEDENO y los cambias por CEDEÑO.

ingmichel 22-09-2017 16:28:14

Re
 
Cita:

Empezado por Casimiro Notevi (Mensaje 521237)
Ni siquiera ha dicho qué base de datos está usando.
Si el valor correcto es CEDEÑO, ¿por qué no lo cambias antes en la base de datos en problema solucionado?
Buscas todos los CEDENO y los cambias por CEDEÑO.

Saludos si ve el titulo del post es sql server, y no es tema de cambiar la data ya que en el futuro puede que se ingrese data con el mismo
problema dependiendo del idioma del teclado y o el digitador, como no tengo los fuentes de la aplicacion no puedo controlar cuando se ingrese una ñ.

Casimiro Notevi 22-09-2017 17:50:49

Cita:

Empezado por ingmichel (Mensaje 521248)
Saludos si ve el titulo del post es sql server,

Un sql server es cualquier servidor de bases de datos sql: mysql, postgresql, firebird, oracle, etc,
Si te refieres a MS sql server, deberías haberlo especificado, no somos adivinos. También podías haber puesto tu pregunta en el foro MS sql server, pero lo has puesto en el SQL genérico, así que no podemos adivinar.

Cita:

Empezado por ingmichel (Mensaje 521248)
y no es tema de cambiar la data ya que en el futuro puede que se ingrese data con el mismo
problema dependiendo del idioma del teclado y o el digitador, como no tengo los fuentes de la aplicacion no puedo controlar cuando se ingrese una ñ.

Pues estamos en lo mismo, no somos adivinos y desconocemos tu caso y tus circunstancias, así que te hemos contestado con los datos que tenemos, los que tú nos has dado, o sea, con ninguno.

roman 22-09-2017 19:15:39

Cita:

Empezado por ingmichel (Mensaje 521182)
Saludos, tengo la siguiente nececidad y es que nececito buscar un string aun cuando éste este almacenado con la letra ñ,
por ejemplo si busco el apellido CEDENO y en la base de datos está como CEDEÑO,
me traiga el resultado, y viceversa

Todo es cuestión del "cotejamiento" (collation) que uses. Una búsqueda en Google me lleva a este enlace en donde indican la solución. Como no uso SQL Server lo probé en MySQL así:

Código SQL [-]
select * from tabla where nombre like "%PENA%" collate utf8_swedish_ci

Lo que trajo registros con nombres como "PEÑA", "PEÑALOZA".

Cabe notar, en el caso de MySQL, que el cotejamiento usado debe corresponder al juego de caracteres. Esto es, si la tabla usa latin1 entonces usarías el cotejamiento latin1_swedish_ci. También, nuevamente en el caso de MySQL, un cotejamiento como utf8_spanish_ci no me funcionó.

Finalmente, observa que no es necesario cambiar el juego de caracteres o cotejamiento de tu tabla, ya que el cambio lo haces en la misma consulta SQL.

LineComment Saludos

roman 22-09-2017 19:23:13

Cita:

Empezado por Casimiro Notevi (Mensaje 521252)
Un sql server es cualquier servidor de bases de datos sql: mysql, postgresql, firebird, oracle, etc,

Yo sé que es molesto que Microsoft se haya apropiado de un término genérico para denotar su propio software. Es como cuando los mexicanos nos molestamos porque los gringos se llamen americanos a sí mismos, siendo que americanos somos todos, desde Canadá hasta Argentina. Pero eso no quita que hay usos y costumbres, y en este caso, SQL Server es casi seguro que se refiere a MS SQL Server ya que, al menos en español, es muy raro que alguien se refiera a un servidor SQL como un SQL Server ;)

LineComment Saludos

Casimiro Notevi 22-09-2017 20:46:50

Cita:

Empezado por roman (Mensaje 521254)
Yo sé que es molesto que Microsoft se haya apropiado de un término genérico para denotar su propio software. Es como cuando los mexicanos nos molestamos porque los gringos se llamen americanos a sí mismos, siendo que americanos somos todos, desde Canadá hasta Argentina. Pero eso no quita que hay usos y costumbres, y en este caso, SQL Server es casi seguro que se refiere a MS SQL Server ya que, al menos en español, es muy raro que alguien se refiera a un servidor SQL como un SQL Server ;)
LineComment Saludos

Ya, si así llevamos muchos años, pero en este caso el título no me pareció entender claramente que se refería a ese producto en concreto. Así que me ha molestado que se haya molestado, cuando lo que tenía que haber hecho es explicar mejor el problema :rolleyes:

Casimiro Notevi 23-09-2017 14:32:49

También es que leí el texto, pero no el título :o

abelg 25-09-2018 21:46:43

Usa Replace.

Ejemplo.
Código SQL [-]
Create Table #Empleado (
  ID int identity,
  Nombre  nvarchar(100),
  Edad int
)

Declare @filtro nvarchar(100)

SET @filtro = 'ENO'

Insert into #Empleado (Nombre, Edad) Values ('Triveño', 30)
Insert into #Empleado (Nombre, Edad) Values ('Juan', 31)
Insert into #Empleado (Nombre, Edad) Values ('CEDEÑO', 40)
Insert into #Empleado (Nombre, Edad) Values ('Calero', 20)
Insert into #Empleado (Nombre, Edad) Values ('CEDENO', 35)
Insert into #Empleado (Nombre, Edad) Values ('Antonio', 50)

Select *
from #Empleado
Where REPLACE(Nombre, 'Ñ', 'N') like '%'+@filtro+'%'


Drop table #Empleado


La franja horaria es GMT +2. Ahora son las 11:56:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi