2015-10-27 12 views
6

Ciao sto avendo una tabella in un database come questo:Selezione query SQL con% come carattere valore

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

sto usando questa tabella per fare i miei URL amichevole, ma come molti sanno un segno% ain È un carattere url valido, pertanto il mio browser sta diventando una cattiva richiesta. Ho molte voci in questa tabella (1700 circa) e ho bisogno di una query per afferrare tutti quelli con% nella parola chiave della colonna.

Così ho cercato di farlo in MySQL e si avvicinò con questa query:

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

Questo era di ritorno tutte le mie parole chiave come% è utilizzato come jolly.

La mia domanda come recuperare ogni parola chiave contenente un carattere% con SQL?

risposta

5

Usa un personaggio di fuga!

MySQL ha barra rovesciata (\) come carattere di escape di default:

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

Il ANSI SQL modo è quello di utilizzare una clausola ESCAPE per specificare sfuggire carattere, ad esempio:

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

(Funziona anche con MySQL, almeno fino a quando non è specificato \.)

+0

Ah buona risposta! Non ho pensato di usare la fuga. – Matt

+0

Questo ha fatto il lavoro per me :)! – Baklap4

+1

Solo curioso. perché hai bisogno di 'escape '\'' dato che 'SELECT * FROM v3_url_alias WHERE parola chiave LIKE '% \ %%';' funziona. – 6339

4

Utilizzare parentesi quadre.

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

Utilizzando MySQL:

utilizzare una barra rovesciata per sfuggire il carattere (\).

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