-
Столкнулся с такой проблемой на MSSQL EXPRESS... Имеется процедура с параметром @criteria varchar(20) и далее выполняется поиск с оператором LIKE: SELECT c.[name] FROM dbo.Loc_City c WHERE c.[name] LIKE @criteria+'%' AND c.code='375' AND c.province_id=0 AND c.region_id=0 ORDER BY c.[name]; в параматре сидит значение русскими буковками: Мин. Может быть любое другое.. Выборка ничего не находит, хотя я знаю, что там есть 'Минск'. Тогда делаю так: declare @criteria nvarchar(30);
declare @query nvarchar(max);
Set @criteria='Мин';
set @query='SELECT c.[name] FROM dbo.Loc_City c
WHERE c.[name] LIKE '''+@criteria+'%''
AND c.code=''375''
AND c.province_id=0
AND c.region_id=0
ORDER BY c.[name]; '
print @query; Результат такой: SELECT c.[name] FROM dbo.Loc_City c WHERE c.[name] LIKE '???%' AND c.code='375' AND c.province_id=0 AND c.region_id=0 ORDER BY c.[name]; Когда добавляю префикс N: Set @criteria=N'Мин'; то результат получается правильным. Так вот вопрос такой: что надо сделать с @criteria, чтоб unicode строка передавлась в query корректно?
-
> @criteria varchar(20)
@criteria Nvarchar(20)
-
nvarchar - так и есть. Это я опечатался в тексте. Смотри в коде.
-
> что надо сделать с @criteria ничего. вообще то это у дельфи всегда были проблемы с юникодом, а не у mssql.
-
Дело в том, что все остальные функции (добавление, обновление) c юникодом работают корректно, но LIKE никак не хочет... Сначала я передавал значения как параметры в процедуру и исполнял ее, но вот сейчас попробовал построить запрос в программе и исполнить его как query и... все отработало нормально...
-
> но LIKE никак не хочет... коде под > Тогда делаю так: > ... нет LIKE, есть работа со строкой, видимо чисто случайно принявшей форму запроса (хозяин про это не в курсе, значит случайно).
-
или хочешь сказать что если в том примере (не в копии, не в другом компоненте, а там где не работает) поставить вместо LIKE равно, то все налаживается? возвращаешь "ломается"?
ну тогда это чудо, и надо либо священников вызывать коммп канонизировать, либо их же бесов изгонять... смотря ка подашь.
-
Про равно я не говорил. Я сказал, что сохраняется и показывается все корректно, а не вопросиками... А вот когда в query с Like передаю как параметр, то не проходит...
-
> Про равно я не говорил. а надо бы, надо проверять варианты, и раз "грешишь" на одно, поставь другое, и все. сразу станет ясно что это ни причем.
> А вот когда в query с Like передаю как параметр, то не проходит... откуда???? про дельфи полный игнор? сделай проверку, тоже самое в Query Analyzer-е. при чем тут вообще Like? ищешь там где "светлее"?
-
> как параметр кстати, в приведенном коде > Тогда делаю так: параметра тоже нет. но > Результат такой: тем не менее "испорчен".
-
1. Мне не надо равно, а надо получить список подобных значений; 2. У меня не дельфи, а C#; 3. Проблемное место локализовано и выведено в тему;
|