|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Добрый день! Запрос формирует на выходе 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 в нормальном виде. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 16:19 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Yennifer123, Очередная попытка превратить sql-сервер в веб-сервер . Может почитаете, что такое model-view-controller, например? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 17:14 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Yennifer123, Попробуйте поменять c:\Work\1\diff.html на c:\Work\1\diff.txt. Похоже на то что sqlcmd умничать пытается. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 19:14 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
авторЗапрос формирует на выходе html А что мешает это сделать в приложении, зачем сервер терзать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 20:01 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Gerros, замена .xml на txt не исправила ситуацию(( это надо что-то в процедуре поменять... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 20:33 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Владислав Колосов, в каком приложении? Я просто ограничена в своем поле деятельности в данном случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 20:34 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Yennifer123 как заменить & lt; на < и & gt; на > , убрать & #x0D; ? Т.е. получить html в нормальном виде. Не может быть такого чуда, как замена символов в полях сиквелом или утилитой sqlcmd ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 21:40 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Yennifer123, напишите приложение, которое будет преобразовывать данные, полученные из таблиц, в HTML без каких-то трюков. Возьмите C#, Basic.Net. & lt; - это естественно, так как специальные символы требуется экранировать. Сначала создаете себе трудности, а потом начинаете их преодолевать... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 22:15 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Владислав Колосов & lt; - это естественно, так как специальные символы требуется экранировать ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 08:38 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Yennifer123 как заменить & lt; на < и & gt; на > , убрать & #x0D; ? Т.е. получить html в нормальном виде. Зачем вообще это делается? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 09:39 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
alexeyvg Владислав Колосов & lt; - это естественно, так как специальные символы требуется экранировать Это спецификация XML. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 10:42 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
invm, чтобы вывести весь файл, т.к. в переменную типа varchar(max) полностью не помещается. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 11:02 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Владислав Колосов, я б с удовольствием, но руководство настаивает обходиться тем что есть. на другое прав не дают( ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 11:05 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Пока что решила проблему через пень - колоду: разбила таблицу со стилями и тегами в запросе по кускам и вывела в итоге временной таблицей посредством переменной varchar(max), который не преобразует спецсимволы при выводе. Результат получился, тот который нужен Но я надеялась на более красивый метод(( ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 11:13 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Yennifer123 чтобы вывести весь файл, т.к. в переменную типа varchar(max) полностью не помещается. Короче, уберите этот фрагмент и будет вам счастье. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 11:14 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
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 - отрезает часть получившейся строки и пишет ее в файл. Файл получается неполным... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 11:46 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Yennifer123, Читайте про опцию -y sqlcmd ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 12:05 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Yennifer123 если убрать тот кусок, то остается вариант Код: sql 1.
Вы хотя бы отлаживайтесь на простом репро-примере, что бы хоть видеть, что выводит процедура. Простое репро показывает, что замена скобок идёт в cast ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 21:23 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Владислав Колосов Yennifer123, напишите приложение, которое будет преобразовывать данные, полученные из таблиц, в HTML без каких-то трюков. Возьмите C#, Basic.Net. & lt; - это естественно, так как специальные символы требуется экранировать. Сначала создаете себе трудности, а потом начинаете их преодолевать... Иногда рекомендации "напишите приложение" не знаешь, куда приложить. А если это, скажем процедура, вызываемая из другого приложения? Тогда уж проще написать SQLCLR procedure и вызывать её ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 09:20 |
|
SQL, html и спецсимволы.
|
|||
---|---|---|---|
#18+
Ролг Хупин Владислав Колосов Yennifer123, напишите приложение, которое будет преобразовывать данные, полученные из таблиц, в HTML без каких-то трюков. Возьмите C#, Basic.Net. & lt; - это естественно, так как специальные символы требуется экранировать. Сначала создаете себе трудности, а потом начинаете их преодолевать... Иногда рекомендации "напишите приложение" не знаешь, куда приложить. А если это, скажем процедура, вызываемая из другого приложения? Тогда уж проще написать SQLCLR procedure и вызывать её Автор просто сделал ненужно преобразование перед выводом в файл, только и всего. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2021, 11:39 |
|
|
start [/forum/topic.php?fid=46&msg=40084338&tid=1684504]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 133ms |
0 / 0 |