2017-09-22 8 views
2

Wie bekomme ich eine Abfrage, die mir das Wort bringt, das das Sonderzeichen enthält oder nicht? ZB habe ich diese Daten: "NÃO" und wenn ich suche, indem ich "NAO" eintippst, sollten Sie diese Information an mich zurückgeben. Und umgekehrt, wenn ich "ANTONIO" habe und ich "ANTÓNIO" schreibe, sollte ANTÓNIO zu mir zurückkehren. Ich benutze diesen Code, aber es funktioniert nicht:SQL LIKE mit Sonderzeichen

SELECT * FROM PESSOA WHERE NOME like '%'+ @PROCURAR + '%' 
+2

"NÃO" und "NAO" sind verschiedene Charaktere – user1844933

+4

Geben Sie diesem einen Versuch, https://stackoverflow.com/questions/2461522/how-do-i-perform- an-Akzent-unempfindlich-vergleichen-e-mit-è-é-ê-and-ë-in-sql-ser –

+0

Ein bisschen ein hack, aber Sie könnten mit 'REPLACE (NOME, 'Ã', 'A ') ' –

Antwort

2

Accent Sensitive und Accent Unempfindlich Suche don unter Verwendung sein können Latin1_general_CI_AI

dh ANTONIO und ANTONIO sind die gleichen, wenn Accent Unempfindlich.

In der folgenden Abfrage Latin1_general_CI_AI kann in die folgenden Teile unterteilt werden.

  • latin1 macht die Server-treat-Strings mit charset Latin 1, im Grunde ascii.

  • CI spezifiziert Groß- und Kleinschreibung, also "ABC" gleich "abc".

  • AI spezifiziert Akzent-unempfindlich, also 'ü' gleich 'u'.

Ihre Abfrage sollte wie folgt lauten:

SELECT * FROM table_name WHERE field_name COLLATE Latin1_general_CI_AI Like '%ANTONIO%' COLLATE Latin1_general_CI_AI 

Erwartete Ergebnis ist wie folgt:

Id name 
1 ÃNTONIO 
2 ANTÓNIO 
3 ANTONIO 
4 ANTÓNIÓ 
+0

Ich habe es so gemacht und es hat funktioniert –