2012-05-07 3 views
17

Stavo cercando un elenco di caratteri speciali che devono essere sfuggiti in ms sql server ma non ho trovato una e la maggior parte delle risposte che ho visto per le domande simili consigliate di utilizzare le query parametrizzate .. che Lo sto già facendo, ma il framework che sto usando non mi sfugge.Caratteri che devono essere sfuggiti in Tsql

Così ho pensato io darò un sacco di quelli una prova e vedere quale fallisce .... e ho provato una semplice query

select * from x where value = '<characters>' 

in tale interrogazione ho provato quasi tutti i personaggi che ho trovato sulla mia tastiera e tutti sembrano funzionare ... oltre alla Singe Quote .. che uno fallisce.

Così voglio sapere la lista dei caratteri che non sono validi e devono essere sfuggiti in MS SQL Server - tsql e non vogliono correre il rischio di appena sfuggire alla sola offerta e lasciare il resto che potrebbe causare problemi

Apprezzate il vostro aiuto

+2

Eh? Cosa c'è di sbagliato nelle query con parametri? – SLaks

+0

si comportano diversamente in quadri diversi ... non funzionano per me –

+5

Quindi dovresti risolvere il problema. – SLaks

risposta

30

L'unico carattere che richiede l'escape in una stringa è una virgoletta singola (che viene eseguita con due virgolette singole insieme). Altrimenti, è una stringa e t-sql non ne risentirà più.

Se stai usando una dichiarazione del genere, vedono questo argomento SO Escape a string in SQL Server so that it is safe to use in LIKE expression

Per inciso, qualsiasi quadro che non mi ha lasciato usare parametri, che non sfugge correttamente roba per me, è un disco Stop. Cercando di disinfettare manualmente l'input delle stringhe è come fare affidamento sul metodo di estrazione; alla fine ti prenderà

+0

Grazie HackedByChinese, quella era l'unica conferma che stavo cercando! –

+1

La prima volta che ho mai visto l'escape manuale di query paragonato a tirare fuori ... lol. – Corbin

+0

Grazie ad Apache Cayenne per questo! –

0

Non sicuro che sia accurato.

% e . e altri caratteri jolly a seconda della query, potrebbe anche richiedere l'escaping. dove stai cercando un punto. Questo fallirà

select * from xxxx where field like '%.%' 
+1

Si prega di non vandalizzare la risposta. Se ritieni che sia errato e desideri eliminarlo, fai clic sul link "Elimina" sotto il tuo post. – Tunaki

0

Volevo solo dire che _ (sottolineatura) ha anche bisogno di essere sfuggito.

select * from Prodotti dove SomeColumn come 'FD [_]%'

Tra l'altro, niente di sbagliato con le query con parametri, ma a volte si vuole andare alla console di gestione di SQL e rapidamente eseguire una query per trovare qualcosa fuori.