Starší komentáře ke článku: Funkce pro odstranění diakritiky k vyhledávání v MS SQL
Zpět na článek | Úvodní stránka Interval.cz
Datum vložení: 16.2.2005 16:14:18
a co proste sloupec nastavit Kanainsensitive?
Datum vložení: 17.2.2005 12:25:38
Accent-insensitive
Datum vložení: 17.2.2005 21:17:17
Myslis, ze to potom bude i tridit dobre a nebudu mit slova zacinajici na Š zamichany se S?
Datum vložení: 18.2.2005 9:07:34
hledam v dlouhych textech, tak je netridim podle abecedy, pokud potrebuji provadet hledani i v titulku, nazvu mesta a pod, tak budto reseni v clanku, nebo sloupec s accent senistive nebo za chodu menit nastaveni collation na sloupec vytvoreny pomoci AS. Ale vubec idealni je nachystane pohled s nadefinovanymi sloupci jak je potreba a dotaz delat nad timto pohledem ...
Datum vložení: 18.2.2005 12:29:07
Ahoj, funguje to i pro MySql nebo jen pro MS Sql?
Datum vložení: 19.2.2005 10:06:10
To by me taky zajimalo, klidne i odkaz na nejaky jiny clanek, treba i v anglictine
Datum vložení: 21.2.2005 10:01:44
se připojuji .... také se o to snažím delší dobu. Pokud někdo víte ....
Datum vložení: 10.3.2005 10:30:15
Jak to udělat v MySQL se můžete podívat na http://www.thephpwtf.com/node/20 :-).
Datum vložení: 4.4.2005 15:05:56
Diky za odkaz. Urcite se bude hodit.
Datum vložení: 29.11.2007 15:12:01
ten odkaz neexistuje, mozeet dat iny link ktory funguje ?
Datum vložení: 27.2.2005 3:33:15
Úžasné, teď jsem přesně tohle hledal a hle, nalezl. Autorovi dík.
Datum vložení: 13.4.2005 9:41:32
Pripojuji podekovani, usetrilo mi to naky to brouzdani po msdn ;o)
Datum vložení: 27.2.2005 4:34:24
diacritic.IndexOf(diacritic[myPosition] jaký smysl má vložit pozici, a pak ji znovu načíst??
Datum vložení: 10.3.2005 10:09:32
Tak, tak, místo "finalText.Append(diacRemoved[diacritic.IndexOf(diacritic[myPosition])]);" by podle mě stačilo "finalText.Append(diacRemoved[myPosition]);"
Datum vložení: 15.9.2005 12:04:27
SELECT [Company],[City],[Address],[Zip] FROM [dbo].[Contacts] WHERE [City] LIKE COLLATE SQL_Latin1_General_CP1251_CI_AS LIKE '%Kardasova Recice%' Není třeba vytvářet funkci. A funguje to i když zadáte '%Kardašova Rečice%'. To znamená, že vstupní text se nemusí nijak upravovat. Vyzkoušejte si to, funguje to.
Datum vložení: 26.3.2007 14:52:58
sqele, jen bych ubral to prvni LIKE...
Datum vložení: 29.11.2007 15:11:01
Velmi dobry plan, len nezabera, mozete mi povedat v com je problem ? #1273 - Unknown collation: 'SQL_Latin1_General_CP1251_CI_AS'
Datum vložení: 5.1.2009 11:16:53
Jo, to je možnost, ale nefunguje to pro nvarchar. Pak je potřeba ten výraz nejdřív převést na varchar, třeba přes cast
Datum vložení: 7.11.2005 13:48:12
Ačkoliv SQL funkce je správně, C# funkce ukazuje slabinu použitého řešení - funguje jenom pro písmena, na které si její autor vzpomněl, že existují, tedy např. ne pro ë. Doporučuji pro SQL použít řešení nabídnuté jedním z čtenářů v komentářích (zapsat ten cast inline, ne jako funkci, a pro obojí) a pro porovnání v .NET použít metodu k tomu určenou, jmenovitě String.Equals, která má jako jeden z parametrů i možnost porovnávat accent insensitive).
Datum vložení: 11.6.2008 10:04:05
Suhlasim, ta c# funkcia je zla. Preco robit vyhladavanie 'rucne' ked v .NETe mame dostupne vsetko potrebne pre pracu s UNICODE ? Spravna (alebo aspon lepsia) funkcia, ktora funguje nielen na Cestinu a Slovencinu by mohla byt: public static string RemoveAccent(string text) { if (String.IsNullOrEmpty(text)) { return String.Empty; } int stringLength = text.Length; StringBuilder sb = new StringBuilder(stringLength); Encoding encoding = Encoding.GetEncoding(1251); unchecked { for (int i = 0; i < stringLength; i++) { char ch = text[i]; if (Char.IsLetter(ch)) { // ak to nie je znak bez diakritiky if (ch > (char)128) { Byte[] encodedBytes = encoding.GetBytes(Convert.ToString(ch)); sb.Append((char)encodedBytes[0]); } else { // ak je to znak bez diakritiky, tak ten nespracuvame - len posleme na vystup sb.Append(ch); } } else { // ak to nieje pismeno, tak nespracuvame - len posleme na vystup sb.Append(ch); } } //for } // unchecked return sb.ToString(); }
Datum vložení: 8.4.2009 14:36:44
Predesilam, ze jsem totalni llama, nicmene vyzkousel jsem jen cast reseni z tohoto clanku a kupodivu to fungovalo. Potreboval jsem generovat e-mailove adresy ze jmena a prijmeni, tzn. nakonec odstranit diakritiku v poslednim kroku: [i]... DECLARE @Email VARCHAR(128) ... SET @Email = (@Email COLLATE SQL_Latin1_General_CP1251_CI_AS) ... [/i] Toto mi diakritiku spolehlive odstranuje bez prochazeni celeho retezce. Mozna je to pytlovina, tak mi kdyztak odpustte, nicmene mne to funguje. :)
Datum vložení: 8.4.2009 14:37:49
A jo, sry, uz to tu je v diskusi, zda se. :)