Welcome to
Sign in
|
Help
in
Intrebari generale (forum)
Romanian Section (group)
(Entire Site)
Search
Home
Blogs
External Feeds
Forums
Photos
Downloads
About Us
»
Romanian Section
»
Intrebari
»
Intrebari generale
»
Re: Cautare diacritice
Cautare diacritice
Last post 01-29-2011, 10:58 PM by
B_gd_n[ ]Sahlean
. 8 replies.
Sort Posts:
Oldest to newest
Newest to oldest
Previous
Next
01-04-2011, 9:01 AM
8582
dan.nicoara
Joined on 01-04-2011
db_datawriter
Cautare diacritice
Reply
Quote
Am o baza de date SQL Server 2008 cu o tabela ce contine diacritice. utilizatorul are optiunile de a cauta in baza de date cu/fara diacritice. Rezultatele la cautare trebuie sa fie astfel :
1. daca introduce "invatator" atunci in rezultat sa fie si cuvantul învăţător
2. daca introduce "învăţător" sa gaseasca rezultatele ca si mai sus
3. daca se introduce "invatatorul a facut" atunci sa imi returneze ceva de genul (învăţătorul a făcut)
4. daca introduce "învăţătorul a făcut" atunci sa returneze ca si mai sus
Multumesc !
Filed under:
Cautare in DB cu diacritice
,
fara a folosi diacriticile
Report abuse
01-04-2011, 9:54 AM
8583
in reply to
8582
rsocol
Joined on 10-03-2006
Bucuresti
sysadmin
Re: Cautare diacritice
Reply
Quote
Ar trebui să foloseşti un collation Accent-Insensitive:
CREATE TABLE Tabela (
ID_Propozitie int IDENTITY PRIMARY KEY,
Propozitie nvarchar(max) COLLATE Latin1_General_CI_AI NOT NULL
)
INSERT INTO Tabela VALUES (N'Învăţătorul a făcut ordine în clasă.')
INSERT INTO Tabela VALUES (N'Bunicul meu a fost învăţător.')
INSERT INTO Tabela VALUES (N'Mama mea este profesoară.')
GO
DECLARE @Cuvant nvarchar(100)=N'învăţător'
SELECT * FROM Tabela WHERE Propozitie LIKE '%'+@Cuvant+'%'
Răzvan
Report abuse
01-04-2011, 10:56 AM
8584
in reply to
8583
dan.nicoara
Joined on 01-04-2011
db_datawriter
Re: Cautare diacritice
Reply
Quote
Multumesc pentru promptitudinea raspunsului.
As avea 2 intrebari.
1. Daca scriu DECLARE @Cuvant nvarchar(100)=N'invatator' nu cred ca mai returneaza învăţător
2. Cuvantul dupa care caut (@Cuvant) trebuie sa il dau dinamic pentru ca o sa vina din aplicatia ASP.NET si nu reusesc sa declar dinamic N'' + @Cuvant + ''' sau ceva de genul asta.
Daca o sa mearga dupa un cuvant atunci ar merge si pentru expresii.
Multumesc !
Report abuse
01-04-2011, 11:55 AM
8585
in reply to
8584
rsocol
Joined on 10-03-2006
Bucuresti
sysadmin
Re: Cautare diacritice
Reply
Quote
1. Ba da, merge, ăsta e rolul lui AI din Latin1_General_CI_AI.
2. Nu e nevoie de dynamic SQL; @Cuvant poate fi un parametru al procedurii stocate, important e să fie declarat ca nvarchar(n), nu ca varchar(n).
Răzvan
Report abuse
01-04-2011, 11:59 AM
8586
in reply to
8585
Diana
Joined on 03-21-2006
sysadmin
Re: Cautare diacritice
Reply
Quote
Testeaza punctul 1 daca nu-l crezi pe Razvan :)
Exploreaza si full-text search. Ti-ar fi de folos.
Report abuse
01-29-2011, 3:03 PM
8614
in reply to
8586
dan.nicoara
Joined on 01-04-2011
db_datawriter
Wild cards in patindex
Reply
Quote
O intrebare legata de patindex.
este string-ul urmator :
tata si cu mama au mers acasa iar ea a fost la teatru
si se cauta : "a"
vreau sa imi gaseasca doar cuvantul "a" de dupa cuvantul "ea"
NU vreau sa gaseasca a din tata, a din mama a din au, etc. ci doar cuvantul "a"(gramatical vorbind)
am incercat : PATINDEX('[^a-z]'+@q+'[^a-z]',@Text)
de ce nu imi gaseste pozitia respectiva ??
Report abuse
01-29-2011, 3:39 PM
8615
in reply to
8614
B_gd_n[ ]Sahlean
Joined on 07-17-2007
Bucuresti
sysadmin
Re: Wild cards in patindex
Reply
Quote
PATINDEX('
%
[^a-z]'+@q+'[^a-z]
%
',@Text)
Rectificare:
PATINDEX('
%
[^a-z]'+@q+'[^a-z]
%
',@Text) > 0
OR PATINDEX(@q+'[^a-z]
%
',@Text) > 0
OR PATINDEX('
%
[^a-z]'+@q',@Text) > 0
Report abuse
01-29-2011, 4:37 PM
8616
in reply to
8615
dan.nicoara
Joined on 01-04-2011
db_datawriter
Re: Wild cards in patindex
Reply
Quote
Multumesc pentru rapuns ! A fost foarte folositor...cand ma gandesc un semn.....%
Dar acum a aparut alta problema : in replace pot sa fac la fel ?
REPLACE(@Text , '%[^a-z]' + @partOfSourceWord + '[^a-z]%' , 'replace word')
Din nou nu merge. Poate am uitat iar ceva semn...
Report abuse
01-29-2011, 10:58 PM
8617
in reply to
8616
B_gd_n[ ]Sahlean
Joined on 07-17-2007
Bucuresti
sysadmin
Re: Wild cards in patindex
Reply
Quote
Soluția publicată de către SQL Magazine:
http://www.sqlmag.com/article/tsql3/modify-words-and-not-strings-in-tables.aspx
Report abuse