powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL, html и спецсимволы.
20 сообщений из 20, страница 1 из 1
SQL, html и спецсимволы.
    #40084174
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Запрос формирует на выходе html:

DECLARE @html varchar(max);
SELECT @html = CONCAT(
'<style>
* {font-family: verdana, arial, sans-serif; font-size: 12px;}
h1, h2, h3, h4, h5, h6 {text-align: center;}
table {border-collapse: collapse; font-family: verdana, arial, sans-serif; font-size: 12px;}
th {padding: 5px 10px 5px 10px; background: #DDD; border: 1px solid #666; text-align: center;}
td {padding: 5px; border: 1px solid #666; vertical-align: top;}
.left {text-align: left;}
.center {text-align: center;}
.red {background: #FFAAAA; text-align: center;}
.green {background: #88FF88; text-align: center;}
</style>'
, '<p>Заголовок</p>'
, '<table>
<tr><th></th>
<th></th>
<th colspan="4">Имя 1</th>
</tr>
<tr><th>ИмяПоля1</th>
<th>ИмяПоля2</th>
<th>ИмяПоля3</th>
<th>ИмяПоля4</th>
<th>ИмяПоля5</th>
<th>ИмяПоля6</th>
</tr>'
);

SELECT @html = CONCAT(
@html
, '<tr><td>', [поле1]
, '</td><td>', [поле2]
, '</td><td>', [поле3]
, '</td><td>', [поле4]
, '</td><td>', [поле5]
, '</td><td>', [поле6]
, '</td></tr>'
)
FROM [#T] as [t]; -- таблица возвращает 800 строк
SELECT @html = @html + '</table>';


/*Здесь на выходе переменная @html */
SELECT cast('' as xml).query('sql:variable("@html")');

sqlcmd -E -S serv\SQLEXPRESS -d bd -Q "exec [dbo].[proc]" -r 1 -y 0 >> c:\Work\1\diff.html

на выходе получаю файл diff.html:

& lt;'style&'gt;';
* {font-family: verdana, arial, sans-serif; font-size: 12px;}
h1, h2, h3, h4, h5, h6 {text-align: center;}
table {border-collapse: collapse; font-family: verdana, arial, sans-serif; font-size: 12px;}
th {padding: 5px 10px 5px 10px; background: #DDD; border: 1px solid #666; text-align: center;}
td {padding: 5px; border: 1px solid #666; vertical-align: top;}
.left {text-align: left;}
.center {text-align: center;} .....
& lt;tr& gt;& lt;th& gt;[поле1]& lt;/th& gt;
& lt;th& gt;[поле2]</th& gt;
& lt;th& gt;[поле3] lt;/th& gt;....'

как заменить & lt; на < и & gt; на > , убрать & #x0D; ? Т.е. получить html в нормальном виде.
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084196
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123,

Очередная попытка превратить sql-сервер в веб-сервер .

Может почитаете, что такое model-view-controller, например?
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084220
Gerros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123,

Попробуйте поменять c:\Work\1\diff.html на c:\Work\1\diff.txt.
Похоже на то что sqlcmd умничать пытается.
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084230
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗапрос формирует на выходе html

А что мешает это сделать в приложении, зачем сервер терзать.
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084249
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gerros,
замена .xml на txt не исправила ситуацию(( это надо что-то в процедуре поменять...
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084252
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов, в каком приложении? Я просто ограничена в своем поле деятельности в данном случае.
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084262
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123
как заменить & lt; на < и & gt; на > , убрать & #x0D; ? Т.е. получить html в нормальном виде.
Думаю, разгадка простая: тут мы видим запрос, а в sqlcmd вы вызываете процедуру, а в процедуре другой запрос.

Не может быть такого чуда, как замена символов в полях сиквелом или утилитой sqlcmd
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084266
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123,

напишите приложение, которое будет преобразовывать данные, полученные из таблиц, в HTML без каких-то трюков. Возьмите C#, Basic.Net.

& lt; - это естественно, так как специальные символы требуется экранировать. Сначала создаете себе трудности, а потом начинаете их преодолевать...
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084301
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
& lt; - это естественно, так как специальные символы требуется экранировать
Не понял этого предложения. Где "требуется", это цитата из спецификаций типа данных varchar(max) в MSSQL?
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084305
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123
как заменить & lt; на < и & gt; на > , убрать & #x0D; ? Т.е. получить html в нормальном виде.
Убрать SELECT cast('' as xml).query('sql:variable("@html")');

Зачем вообще это делается?
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084321
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Владислав Колосов
& lt; - это естественно, так как специальные символы требуется экранировать
Не понял этого предложения. Где "требуется", это цитата из спецификаций типа данных varchar(max) в MSSQL?

Это спецификация XML.
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084326
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

чтобы вывести весь файл, т.к. в переменную типа varchar(max) полностью не помещается.
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084327
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

я б с удовольствием, но руководство настаивает обходиться тем что есть. на другое прав не дают(
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084330
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока что решила проблему через пень - колоду: разбила таблицу со стилями и тегами в запросе по кускам и вывела в итоге временной таблицей посредством переменной varchar(max), который не преобразует спецсимволы при выводе. Результат получился, тот который нужен Но я надеялась на более красивый метод((
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084331
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123
чтобы вывести весь файл, т.к. в переменную типа varchar(max) полностью не помещается.
Вы опять путаете "не помещается в переменную" и "не выводится полностью на экран"
Короче, уберите этот фрагмент и будет вам счастье.
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084338
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

если убрать тот кусок, то остается вариант

sqlcmd -E -S serv\SQLEXPRESS -d bd -Q "DECLARE @html varchar(max);exec [dbo].[proc]EXEC [dbo].[proc] @html OUTPUT;select @html;" -r 1 -y 0 >> c:\Work\1\diff.html

переменная @html - отрезает часть получившейся строки и пишет ее в файл. Файл получается неполным...
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084341
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123,

Читайте про опцию -y sqlcmd
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084401
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123
если убрать тот кусок, то остается вариант
Так вы замените cast на
Код: sql
1.
SELECT @html


Вы хотя бы отлаживайтесь на простом репро-примере, что бы хоть видеть, что выводит процедура.
Простое репро показывает, что замена скобок идёт в cast
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084429
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Yennifer123,

напишите приложение, которое будет преобразовывать данные, полученные из таблиц, в HTML без каких-то трюков. Возьмите C#, Basic.Net.

& lt; - это естественно, так как специальные символы требуется экранировать. Сначала создаете себе трудности, а потом начинаете их преодолевать...


Иногда рекомендации "напишите приложение" не знаешь, куда приложить.

А если это, скажем процедура, вызываемая из другого приложения?
Тогда уж проще написать SQLCLR procedure и вызывать её
...
Рейтинг: 0 / 0
SQL, html и спецсимволы.
    #40084434
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Владислав Колосов
Yennifer123,

напишите приложение, которое будет преобразовывать данные, полученные из таблиц, в HTML без каких-то трюков. Возьмите C#, Basic.Net.

& lt; - это естественно, так как специальные символы требуется экранировать. Сначала создаете себе трудности, а потом начинаете их преодолевать...


Иногда рекомендации "напишите приложение" не знаешь, куда приложить.

А если это, скажем процедура, вызываемая из другого приложения?
Тогда уж проще написать SQLCLR procedure и вызывать её
Вопрос топика вообще о выводе текстового (varchar) результата запроса в файл, я не понимаю, почему в этом контексте начали говорить про специальное приложение :-)
Автор просто сделал ненужно преобразование перед выводом в файл, только и всего.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL, html и спецсимволы.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]