Oprava: Nesprávná chování LIKE [-] při použití indexu

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:290918
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Chyba #: 352098 (SHILOH_bugs)
Příznaky
Při použití hledání pomocí zástupných znaků na sloupec obsahující hodnota [-] může být odpovídající řádky vynechány Pokud index je používán.
Řešení
Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro SQL Server 2000. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
290211INF: Jak získat nejnovější aktualizaci Service Pack pro SQL Server 2000
Jak potíže obejít
Správnou syntaxi by měla zahrnovat klauzuli ESCAPE vyhledávání označující hledání zástupných znaků:
select * from dashes where no_key like 'a[~-]a%' ESCAPE '~'select * from dashes where primary_key like 'a[~-]a%' ESCAPE '~'				
Prohlášení
Společnost Microsoft potvrzuje, že se jedná o problém v SQL Server 2000. Tento problém byl poprvé opraven v SQL Server 2000 Service Pack 1.
Další informace
-- Incorrect result set is produced by a "SELECT" which uses the "LIKE" -- clause where one argument is a primary key column and the other is a-- string literal with "[-]" in the middle of it.use northwindset nocount offif ( object_id('dashes') is not NULL ) drop table dashescreate table dashes ( primary_key varchar(20) primary key, no_key varchar(20) )insert dashes values ( 'a-a-key', 'a-a-value' )print 'next two statements correctly return one record each'select * from dashes where no_key like 'a-a%'select * from dashes where primary_key like 'a-a%'print 'for the primary key query, it incorrectly returns no rows'select * from dashes where no_key like 'a[-]a%'select * from dashes where primary_key like 'a[-]a%'				
next two statements correctly return one record eachprimary_key          no_key               -------------------- -------------------- a-a-key              a-a-value(1 row(s) affected)primary_key          no_key               -------------------- -------------------- a-a-key              a-a-value(1 row(s) affected)for the primary key query, it incorrectly returns no rowsprimary_key          no_key               -------------------- -------------------- a-a-key              a-a-value(1 row(s) affected)primary_key          no_key               -------------------- -------------------- (0 row(s) affected)				
nesprávná data chybný výsledek výstup zástupné spojovník pomlčka

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 290918 - Poslední kontrola: 01/16/2015 21:50:15 - Revize: 3.2

Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbbug kbfix kbsqlserv2000sp1fix KB290918 KbMtcs
Váš názor