2011-07-28 4 views
0

Dans ma base de données il y a une chaîne qui contient un caractère spécial », mais lorsque je tente de le chercher donne une erreur disant chaîne termaination par exemple:Ma chaîne contient un caractère spécial 'alors comment devrait-elle être récupérée.

String temp=a'bc 
SELECT * FROM table where name like 'temp%' 
+0

Comment essayez-vous de l'interroger? Du code client? À partir de T-SQL dans une procédure stockée? En utilisant PHP? Votre code fait allusion à C#/vb.net –

Répondre

0

Vous devez la seule citation, comme suit: a''bc.

La requête entière devient alors

SELECT * FROM table where name like 'a''bc%' 

N.B. Si le motif en question est dérivé de l'entrée de l'utilisateur, faites attention à SQL injection attacks (voir également xkcd).

0

Dans T-SQL vous échapper les guillemets dans une chaîne entre guillemets en les mettant deux fois, par exemple:

SELECT * FROM table where name like 'a''bc%' 
0

Vous pouvez également utiliser une requête paramétrée au lieu de ligne SQL

DECLARE @var NVARCHAR(50) 
SET @var = ISNULL('%' + your_variable_here + '%', '') 

SELECT * FROM [dbo].[TableName] where [SomeColumn] like @var 
1

Si vous êtes Appelez ceci à partir du code client (par exemple C#), vous utilisez une requête paramétrée:

string temp = "a'bc"; 
string sql = "SELECT * FROM table WHERE name LIKE @Name + '%'"; 

using (var cn = new SqlConnection(" connection string here ")) 
using (var cmd = new SqlCommand(sql, cn)) 
{ 
    cmd.Parameters.Add("@Name", SqlDbTypes.NVarChar, 50).Value = temp; 

    cn.Open(); 
    using (var rdr = cmd.ExecuteReader()) 
    { 

     //do something with your data reader 
    } 
} 
Questions connexes