PDA

Ver la Versión Completa : Combinar n y ñ sql server


ingmichel
20-09-2017, 16:47:42
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/t-sql/functions/soundex-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
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
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.

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
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 (https://stackoverflow.com/questions/43909401/sql-server-2008-treat-n-and-ñ-as-equal) en donde indican la solución. Como no uso SQL Server lo probé en MySQL así:


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
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
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.

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