Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Хранимые процедуры и параметры с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.063 c
15-1266442205
Юрий
2010-02-18 00:30
2010.08.27
С днем рождения ! 18 февраля 2010 четверг


15-1269807638
{Vanek}
2010-03-29 00:20
2010.08.27
Датчик


2-1267590008
cwl
2010-03-03 07:20
2010.08.27
адрес - property с индексом


4-1172734473
Darth Avenger
2007-03-01 10:34
2010.08.27
Купюроприемник CashCode, протокол ccnet


11-1221347021
Лотос
2008-09-14 03:03
2010.08.27
Папка из OpenSaveDialog





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский