Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 FOR XML PATH  [new]
V.Zarubin
Member

Откуда:
Сообщений: 11
Всем здравствуйте.

Такой вопрос. Можно при использовании FOR XML PATH явно указать кодировку. Вопрос возник потому что при выполнении в SQL server mangenet studio результат получаю в кириллице, при выполнении того же запроса из приложения результат получается в не печатных символах....
22 май 13, 10:42    [14331094]     Ответить | Цитировать Сообщить модератору
 Re: FOR XML PATH  [new]
mike909
Member

Откуда:
Сообщений: 662
V.Zarubin,

Смотря какой запрос Вы пытаетесь выполнить.
А то можно и так:
select (
  select val as [text()]
  from (values ('qq'),('ww'),('йй'),('фф')) as t(val)
  for xml path(''),type
).value('(text())[1]','nvarchar(max)') collate Cyrillic_General_100_CI_AS
22 май 13, 10:56    [14331192]     Ответить | Цитировать Сообщить модератору
 Re: FOR XML PATH  [new]
V.Zarubin
Member

Откуда:
Сообщений: 11
mike909
V.Zarubin,

Смотря какой запрос Вы пытаетесь выполнить.


Запрос самый простой
Select 'Тест' FOR XML PATH('')
22 май 13, 11:59    [14331711]     Ответить | Цитировать Сообщить модератору
 Re: FOR XML PATH  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Select N'Тест' FOR XML PATH('')
но зачем ?
22 май 13, 12:00    [14331731]     Ответить | Цитировать Сообщить модератору
 Re: FOR XML PATH  [new]
.-.-.
Guest
mike909
V.Zarubin,

Смотря какой запрос Вы пытаетесь выполнить.
А то можно и так:
select (
  select val as [text()]
  from (values ('qq'),('ww'),('йй'),('фф')) as t(val)
  for xml path(''),type
).value('(text())[1]','nvarchar(max)') collate Cyrillic_General_100_CI_AS


такое вывалит ошибку Incorrect syntax near the keyword 'collate';
если используется юникод, то по барабану коллэйшн;
даже объявив ('йй') юникодом, он им не станет, пока не будет (N'йй')
22 май 13, 12:16    [14331919]     Ответить | Цитировать Сообщить модератору
 Re: FOR XML PATH  [new]
V.Zarubin
Member

Откуда:
Сообщений: 11
Maxx
Select N'Тест' FOR XML PATH('')
но зачем ?


да это просто пример...
22 май 13, 12:27    [14332035]     Ответить | Цитировать Сообщить модератору
 Re: FOR XML PATH  [new]
Гость333
Member

Откуда:
Сообщений: 3683
.-.-.
mike909
select (
  select val as [text()]
  from (values ('qq'),('ww'),('йй'),('фф')) as t(val)
  for xml path(''),type
).value('(text())[1]','nvarchar(max)') collate Cyrillic_General_100_CI_AS


такое вывалит ошибку Incorrect syntax near the keyword 'collate';

Не вывалит, если запустить на SQL Server 2012.
С остальным согласен.
22 май 13, 12:40    [14332150]     Ответить | Цитировать Сообщить модератору
 Re: FOR XML PATH  [new]
.-.-.
Guest
Гость333,

ок, пусть прокатит в 2012,
проверить мне негде.
но выдаст, думаю, что и 2008 в синт. верной записи
(у меня в базе/на сервере некириллический коллэйшн):

К сообщению приложен файл. Размер - 6Kb
22 май 13, 12:51    [14332216]     Ответить | Цитировать Сообщить модератору
 Re: FOR XML PATH  [new]
Гость333
Member

Откуда:
Сообщений: 3683
.-.-.
ок, пусть прокатит в 2012,
проверить мне негде.

На sqlfiddle.com, вестимо. Создаёте любую таблицу, после чего запускаете запрос. Как-то так: http://sqlfiddle.com/#!6/40f9e/1
Результат: qqww????
22 май 13, 12:55    [14332251]     Ответить | Цитировать Сообщить модератору
 Re: FOR XML PATH  [new]
.-.-.
Guest
Гость333,

о, спасибо, теперь и мне будет "вестимо" :)
22 май 13, 13:07    [14332343]     Ответить | Цитировать Сообщить модератору
 Re: FOR XML PATH  [new]
V.Zarubin
Member

Откуда:
Сообщений: 11
Всем спасибо. Тема закрыта.
23 май 13, 08:08    [14336516]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить