Buenas tardes. Hace un tiempo publique un post que hablaba sobre Sinónimos en SQL SERVER, sin embargo trataba de sinónimos en en objetos, es decir, ponerle algún pseudonimo a las tablas, procedimientos o funciones. Les dejo el link http://www.respuestasit.com.mx/2016/10/sinonimos-en-sql-server.html. Sin embargo en esta ocasión les dejaré una función para buscar sinónimos en palabras similares, ¿Qué pasa cuando le damos un Where, pero hay palabras muy similares?. Esas palabras no se van a incluir. Otro caso, queremos buscar las palabras "perro, can, perra, etc", tendríamos que hacer tres o mas búsquedas dentro del like, pues bien, yo les voy a decir como solucionar ese problema.
Hace unos días como DBA, me pidieron dar solución al tema de las búsquedas, por decir algo, el cliente quería buscar refacciones para un Tsuru, y al escribir, escribía palabra como suru, Tzuru, y cosas así, al principio pensé en echarle la bolita a desarrollo, pero después se me ocurrió una manera de parcharlo.
Primero vamos a crear una tabla que contendrá los sinónimos
La tabla consta de tres campos, el primero es el Id que toda tabla debe de tener, además de ser una identidad, el segundo campo es la palabra que escribimos, y el campo syn, es el sinónimo de esa palabra.
Ahora vamos a proceder a llenar esa tabla para que vean para que sirve
Una vez llena la tabla realizaremos la siguiente función.
En esta función lo que estamos realizando es la búsqueda del texto que envíamos como parámetro en la tabla de sinónimos, para posteriormente retornar el sinónimo encontrado.
Ahora vamos a ejecutar esta función
Hace unos días como DBA, me pidieron dar solución al tema de las búsquedas, por decir algo, el cliente quería buscar refacciones para un Tsuru, y al escribir, escribía palabra como suru, Tzuru, y cosas así, al principio pensé en echarle la bolita a desarrollo, pero después se me ocurrió una manera de parcharlo.
Primero vamos a crear una tabla que contendrá los sinónimos
create table
sinonimos
(
id int identity,
palabra varchar(300),
syn varchar (300))
La tabla consta de tres campos, el primero es el Id que toda tabla debe de tener, además de ser una identidad, el segundo campo es la palabra que escribimos, y el campo syn, es el sinónimo de esa palabra.
Ahora vamos a proceder a llenar esa tabla para que vean para que sirve
insert into sinonimos (palabra, syn) values
('suru', 'Tsuru'),
('Refaxionaria', 'REFACCIONARIA'),
('REFACIONARIA', 'REFACCIONARIA'),
('KARBURADOR', 'CARBURADOR').
create function fn_sinonimos (@buscar varchar(max))
RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @reg int
declare @b varchar(max)
declare @palabra varchar(max)
declare @sin varchar(100)
set @b=@buscar
declare @tabla table
(num_reg int, id int, palabra varchar(max), sinonimo varchar(max))
insert into @tabla
select ROW_NUMBER() over(order by id asc), id, palabra, syn
from sinonimos
select @reg = MAX(num_reg) from @tabla
while (@reg > 0)
begin
select @palabra = palabra from @tabla where num_reg = @reg
select @sin = sinonimo from @tabla where num_reg = @reg
set @b=replace(@b, @palabra, @sin)
set @reg = @reg - 1
end
RETURN @b
END
GO
En esta función lo que estamos realizando es la búsqueda del texto que envíamos como parámetro en la tabla de sinónimos, para posteriormente retornar el sinónimo encontrado.
Ahora vamos a ejecutar esta función
DECLARE @palabra varchar(100)
set @palabra = 'Suru'
select dbo.fn_sinonimos(@palabra)
DECLARE @palabra varchar(100)
set @palabra = 'REFAXIONARIA'
select dbo.fn_sinonimos(@palabra)
Como ven las posibilidades son infinitas con esta función para buscar sinónimos. Espero que este post haya sido de su agrado, cualquier duda, estoy a la orden. Espero puedan dar clic en algún anuncio que les interese. Muchas gracias
No hay comentarios.:
Publicar un comentario