Les moyens d'échapper à des guillemets simples dans la commande SQL « LIKE »

voix
4

Quelles sont les différentes façons de sortir des guillemets simples ( ') dans le SQL LIKEcommande?

Une façon est de mettre deux guillemets simples à chaque fois que vous devez échapper à une seule citation.

Pouvez-vous suggérer quelque chose des gens?

Bases de données: SQL Server 2005 et Oracle 10g

Créé 17/08/2010 à 16:48
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
10

Vous avez déjà la réponse. Vous devez utiliser deux guillemets simples:

select * from table where field like '%''something''%'
Créé 17/08/2010 à 16:50
source utilisateur

voix
2

Deux guillemets simples est la meilleure solution.

Vous pouvez également utiliser un CHAR(39)pour représenter un caractère unique de citation.

UPDATE Employee SET LastName = 'O' +  CHAR(39) + 'Brien' 
WHERE ID=1;
Créé 17/08/2010 à 16:54
source utilisateur

voix
2

La meilleure façon est de lier le paramètre avec ADO ou ADO.NET.

Comme (par exemple en C # avec ADO.NET):

SqlCommand x = new SqlCommand(sqlConnection, @"select * from table where col like '%'+@para1+'%'");
x.parameters.add(new SqlParameter("@para1",sqltype.varchar,100)).value = "this is a' test";

Dans SQL Server 2005 vous échapper à une seule apostrophe ( « ) avec un Guillemet simple ( » ') si vous ne voulez pas lier:

select * from table where col like '%this is a'' test%'
Créé 17/08/2010 à 16:52
source utilisateur

voix
1

Il y a aussi la méthode « Q-citation »:

select * from mytable where text like q'#%Here's some text%#';

Il est disponible depuis Oracle 10.2.

J'ai utilisé un caractère « # » comme séparateur de devis, mais vous pouvez utiliser à peu près tout caractère qui ne figurera pas dans la chaîne (il y a quelques exceptions, comme le caractère d'espace).

Dans un exemple simple comme ça ci-dessus, je ne le ferais pas probablement cela. Je venais de doubler les guillemets simples, mais il ne vient utile lors de la construction de grandes dynamiques instructions SQL qui incluent beaucoup de chaînes littérales.

Créé 17/08/2010 à 16:57
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more