Vyhledejte řádky se speciálními znaky v serveru SQL

Video: Vyhledejte řádky se speciálními znaky v serveru SQL

Video: Vyhledejte řádky se speciálními znaky v serveru SQL
Video: When Asians fail Math 2024, Březen
Vyhledejte řádky se speciálními znaky v serveru SQL
Vyhledejte řádky se speciálními znaky v serveru SQL
Anonim

Při odstraňování problému s programováním jsem si všiml, že nemůžete použít vyhledávání LIKE pro řetězcové sloupce obsahující speciální znaky jako% nebo _ bez použití speciální syntaxe. Zjištění problému trvalo jen několik minut, ale zapamatování syntaxe je vždy snadnější, když o něm píšete.

Takže ano, tento příspěvek je výhradně pro můj prospěch. Doufejme, že to pomůže i někomu jinému.

Řekněme, že chcete najít pole, která obsahují text "100%", takže tento dotaz sestavujete takto:

SELECT * FROM tablename WHERE fieldname LIKE ‘%100%%’

Místo toho, co jste chtěli, získáte všechny řádky, které obsahují "100", stejně jako řádky obsahující "100%".

Problém je, že SQL Server používá znaky procenta, podtržítka a hranaté závorky jako zvláštní znaky. Jednoduše je nemůžete použít jako obyčejný znak v dotazu LIKE, aniž byste je unikli.

Úhel náměstí

Můžete obklopit% nebo _ s hranatými závorkami, abyste SQL serveru uvedli, že znak uvnitř je pravidelný znak.

SELECT * FROM tablename WHERE fieldname LIKE ‘%100[%]%’

Syntaxe T-SQL ESCAPE

Případně můžete připojit operátor ESCAPE k dotazu a přidat hodnotu before hodnota, kterou chcete uniknout.

SELECT * FROM tablename WHERE fieldname LIKE ‘%100\%%’ ESCAPE ‘’

Část dotazu "ESCAPE" dotazu říká, že stroj SQL interpretuje znak za jako písmenný znak namísto jako zástupný znak.

Osobně se jedná o druhou metodu, s níž se lépe zabývám, a můžete ji použít i k tomu, abyste unikli náměstí.

Doporučuje: