Моя строка содержит специальный символ "тогда как его нужно получить. - PullRequest
0 голосов
/ 28 июля 2011

В моей базе данных есть строка, содержащая специальный символ ', но когда я пытаюсь получить ее, выдает ошибку, говорящую об окончании строки, например:

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

Ответы [ 4 ]

1 голос
/ 28 июля 2011

Если вы вызываете это из клиентского кода (например, c #), вы используете параметризованный запрос:

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
   }
}
0 голосов
/ 28 июля 2011

В T-SQL вы экранируете кавычки в строке в кавычках, помещая их дважды, например:

SELECT * FROM table where name like 'a''bc%'
0 голосов
/ 28 июля 2011

Вы также можете использовать параметризованный запрос вместо встроенного SQL

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

SELECT * FROM [dbo].[TableName] where [SomeColumn] like @var
0 голосов
/ 28 июля 2011

Вам нужно удвоить одинарную кавычку, например, так: a''bc.

Весь запрос становится

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

NB Если рассматриваемый шаблон получен из пользовательского вводаОстерегайтесь Атаки SQL-инъекций (см. также xkcd ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...