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

Avatar

Autor komentáře: Tomáš Andrýsek

Datum vložení: 16.2.2005 16:14:18

a co proste sloupec nastavit Kanainsensitive?

Avatar

Autor komentáře: Tomáš Andrýsek

Datum vložení: 17.2.2005 12:25:38

Accent-insensitive

Avatar

Autor komentáře: Jenik T

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?

Avatar

Autor komentáře: Tomáš Andrýsek

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

Avatar

Autor komentáře: Fik

Datum vložení: 18.2.2005 12:29:07

Ahoj, funguje to i pro MySql nebo jen pro MS Sql?

Avatar

Autor komentáře: yaleman

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

Avatar

Autor komentáře: Lukáš Němec

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

Avatar

Autor komentáře: Jakub Vrána

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

Avatar

Autor komentáře: Fik

Datum vložení: 4.4.2005 15:05:56

Diky za odkaz. Urcite se bude hodit.

Avatar

Autor komentáře: michal obeda

Datum vložení: 29.11.2007 15:12:01

ten odkaz neexistuje, mozeet dat iny link ktory funguje ?

Avatar

Autor komentáře: Daniel Steigerlwad

Datum vložení: 27.2.2005 3:33:15

Úžasné, teď jsem přesně tohle hledal a hle, nalezl. Autorovi dík.

Avatar

Autor komentáře: rj

Datum vložení: 13.4.2005 9:41:32

Pripojuji podekovani, usetrilo mi to naky to brouzdani po msdn ;o)

Avatar

Autor komentáře: Daniel

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

Avatar

Autor komentáře: Jakub Vrána

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]);"

Avatar

Autor komentáře: Martin

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.

Avatar

Autor komentáře: MIRAMA

Datum vložení: 26.3.2007 14:52:58

sqele, jen bych ubral to prvni LIKE...

Avatar

Autor komentáře: michal obeda

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'

Avatar

Autor komentáře: Mi.Chal.

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

Avatar

Autor komentáře: Michal A. Valášek

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

Avatar

Autor komentáře: Dusan Hlavaty

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(); }

Avatar

Autor komentáře: llama

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

Avatar

Autor komentáře: llama

Datum vložení: 8.4.2009 14:37:49

A jo, sry, uz to tu je v diskusi, zda se. :)

Zpět na článek | Úvodní stránka Interval.cz