Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Хранимые процедуры и параметры с UNICODE   Найти похожие ветки 

 
Мазут Береговой ©   (2009-04-16 21:02) [0]

Столкнулся с такой проблемой на 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 корректно?


 
turbouser ©   (2009-04-16 21:17) [1]


> @criteria varchar(20)

@criteria Nvarchar(20)


 
Мазут Береговой ©   (2009-04-16 21:33) [2]

nvarchar - так и есть. Это я опечатался в тексте. Смотри в коде.


 
sniknik ©   (2009-04-16 21:55) [3]

> что надо сделать с @criteria
ничего.
вообще то это у дельфи всегда были проблемы с юникодом, а не у mssql.


 
Мазут Береговой ©   (2009-04-16 22:21) [4]

Дело в том, что все остальные функции (добавление, обновление) c юникодом работают корректно, но LIKE никак не хочет... Сначала я передавал значения как параметры в процедуру и исполнял ее, но вот сейчас попробовал построить запрос в программе и исполнить его как query и... все отработало нормально...


 
sniknik ©   (2009-04-16 22:54) [5]

> но LIKE никак не хочет...
коде под
> Тогда делаю так:
> ...
нет LIKE, есть работа со строкой, видимо чисто случайно принявшей форму запроса (хозяин про это не в курсе, значит случайно).


 
sniknik ©   (2009-04-16 23:02) [6]

или хочешь сказать что если в том примере (не в копии, не в другом компоненте, а там где не работает)  поставить вместо LIKE равно, то все налаживается? возвращаешь "ломается"?

ну тогда это чудо, и надо либо священников вызывать коммп канонизировать, либо их же бесов изгонять... смотря ка подашь.


 
Мазут Береговой ©   (2009-04-16 23:19) [7]

Про равно я не говорил. Я сказал, что сохраняется и показывается все  корректно, а не вопросиками... А вот когда в query с Like передаю как параметр, то не проходит...


 
sniknik ©   (2009-04-16 23:54) [8]

> Про равно я не говорил.
а надо бы, надо проверять варианты, и раз "грешишь" на одно, поставь другое, и все. сразу станет ясно что это ни причем.

> А вот когда в query с Like передаю как параметр, то не проходит...
откуда???? про дельфи полный игнор? сделай проверку, тоже самое в Query Analyzer-е. при чем тут вообще Like? ищешь там где "светлее"?


 
sniknik ©   (2009-04-16 23:57) [9]

> как параметр
кстати, в приведенном коде
> Тогда делаю так:
параметра тоже нет. но
> Результат такой:
тем не менее "испорчен".


 
Мазут Береговой ©   (2009-04-17 00:08) [10]

1. Мне не надо равно, а надо получить список подобных значений;
2. У меня не дельфи, а C#;
3. Проблемное место локализовано и выведено в тему;



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
2-1271311609
Den
2010-04-15 10:06
2010.08.27
InstallShield диалоги


2-1270531127
Knob
2010-04-06 09:18
2010.08.27
Проблема с ActiveX


4-1237347702
Дмитрий
2009-03-18 06:41
2010.08.27
Стиль окна


2-1270793257
Abcdef123
2010-04-09 10:07
2010.08.27
Проблема после перевода проекта из Дельфи 6 в Дельфи 2007.


15-1265841005
Юрий
2010-02-11 01:30
2010.08.27
С днем рождения ! 11 февраля 2010 четверг