2015-10-27 5 views
6

Hallo ich habe eine Tabelle in einer Datenbank wie folgt aus:Auswahl der SQL-Abfrage mit% als Wertzeichen

╔══════════════════════════════════════════╗ 
║    v3_url_alias    ║ 
╠════╦═══════════════╦═════════════════════╣ 
║ id ║ query  ║  keyword  ║ 
╠════╬═══════════════╬═════════════════════╣ 
║ 1 ║ product_id=20 ║ 540-65R38-K_028 ║ 
║ 2 ║ product_id=21 ║ 18.00R33-EM_DT-150% ║ 
╚════╩═══════════════╩═════════════════════╝ 

ich diese Tabelle bin mit meiner Urls freundlich, aber wie viele wissen, dass ein Zeichen% ain zu machen 't ein gültiges URL-Zeichen, wodurch mein Browser eine falsche Anfrage erhält. Ich habe viele Einträge in dieser Tabelle (1700 oder so) und brauche eine Abfrage, um alle mit% im Spaltenschlüsselwort zu erfassen.

Also habe ich versucht, dass in MySQL zu tun und kam mit dieser Abfrage nach oben:

SELECT * FROM v3_url_alias WHERE keyword LIKE '%%%'; 

Dies wurde alle meine Keywords Rückkehr in% als Platzhalter verwendet wird.

Meine Frage, wie man jedes Schlüsselwort erhält, das ein% -Zeichen mit SQL enthält?

Antwort

5

Verwenden Sie ein Escape-Zeichen!

MySQL hat Backslash (\) als Standard-Escape-Zeichen:

SELECT * FROM v3_url_alias WHERE keyword LIKE '%\%%'; 

Die ANSI SQL Art und Weise eine ESCAPE Klausel zu verwenden, ist die Escape-Zeichen angeben, zum Beispiel:

SELECT * FROM v3_url_alias WHERE keyword LIKE '%#%%' escape '#'; 

(Dies funktioniert auch mit MySQL, zumindest solange \ nicht angegeben ist.)

+0

Ah gute Antwort! Ich habe nicht an Flucht gedacht. – Matt

+0

Das hat den Job für mich gemacht :)! – Baklap4

+1

Nur neugierig. Warum brauchst du 'escape '\' 'da' SELECT * FROM v3_url_alias WHERE das Schlüsselwort LIKE'% \ %% '; 'funktioniert. – 6339

4

Verwenden Sie eckige Klammern.

SELECT * 
FROM v3_url_alias 
WHERE keyword LIKE '%[%]%' 
0

Verwendung MySQL:

ein Backslash Charakter zu entkommen (\).

SELECT * FROM v3_url_alias WHERE keyword LIKE '%\%%'; 
Verwandte Themen