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

Откуда:
Сообщений: 73
Есть ли какая-то аналогия replace() для вывода данных в фoрмате XML?
У меня часть данных в поле хранятся в таком виде:

Картинка с другого сайта.

Но при выводе мне нужно, чтобы данные из тега были в одну строку:

Картинка с другого сайта.
23 мар 18, 15:54    [21281261]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
mssql тут при чем ?
23 мар 18, 15:57    [21281272]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
Maxx,

у меня данные хранятся в поле таблицы MSSQL
23 мар 18, 16:13    [21281313]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
а выводите строки вы куда,простите ?
23 мар 18, 16:19    [21281329]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
Maxx,

через sqlcmd в *.csv
23 мар 18, 16:26    [21281350]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
..... xml -> csv ?
что в итоге то ? прямо с тегами в файл или как ?
23 мар 18, 16:30    [21281370]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
вам переводы строк что-ли надо убрать?

вот их и заменяйте на пустую строку:
char(13)
char(10)
23 мар 18, 16:31    [21281371]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Konst_One
вам переводы строк что-ли надо убрать?

вот их и заменяйте на пустую строку:
char(13)
char(10)

да ето понятно :) не понятно что в итоге получаеться\ ... цсв с тегами или как ?
23 мар 18, 16:34    [21281385]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
Maxx,

да кто ж его поймёт, пусть сам ТС расскажет
23 мар 18, 16:37    [21281393]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
Konst_One,

Да - все верно: csv с тегами
вывожу
declare @cmd varchar(1200)
SET @cmd='sqlcmd -S ServeName -d DataBaseName -E -Q "set nocount on;select ID, XML_TABLE, CONVERT(varchar(11), getdate(),105) " -o c:\Report.csv -u -y 0  -s "'+CHAR(9)+'"' SET NOCOUNT ON
EXEC master..xp_cmdshell @cmd
23 мар 18, 16:50    [21281441]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
это поле XML_TABLE какого типа в базе?
23 мар 18, 16:59    [21281478]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
есть 2 варианта
1. все привести к арчар макс и реплесить
2. иметь секас с nodes + modify
23 мар 18, 17:05    [21281503]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
Konst_One,

поле формата xml без пустых значений
если развернуть таблицу в SSMS там XML_TABLE (XML(.),NOT NULL)
23 мар 18, 17:06    [21281505]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
+
я за 1-й вариант
23 мар 18, 17:06    [21281506]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
Maxx
1. все привести к варчар макс и реплесить

теперь возник вопрос "как реплесить непечатный символ?"
23 мар 18, 17:12    [21281536]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
replace( replace( convert(varchar(max), XML_TABLE),  char(13), ''), char(10), '')
23 мар 18, 17:16    [21281558]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
напрямую все равно не лезет :))

declare @x xml
set @x='
<root>
  <step>This is step 1</step>
  <step>This is step 2</step>
  <step>This is step 3</step>
</root>'


select replace(cast(@x.query('
 for $i in /root[1]/step
    return string($i)
 ') as varchar(300)), 'This', 'NO')

хотя может кто знает ..как без конверта к строке ето сделать (ессно на t-sql) :)
23 мар 18, 17:18    [21281570]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
Maxx
'<root>
  <step1>This is step 1</step1>
  <step2>This is step 2</step2>
  <step3>This is step 3</step3>
</root>'



только вот у меня
'<root>
  <step1>This is step 1 and row 1.
               This is step 1 and row 2.
               This is step 1 and row 3.</step1>
  <step2>This is step 2</step2>
  <step3>This is step 3</step3>
</root>'


и нужно получить

'<root>
<step1>This is step 1 and row 1.This is step 1 and row 2.This is step 1 and row 3.</step1>
<step2>This is step 2</step2>
<step3>This is step 3</step3>
</root>'



мне не теги нужно в одну строку
23 мар 18, 18:09    [21281749]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
то что ты пытаешься сделать не относится к возможностям SQL-сервера.
Этим занимается прикладное ПО.
26 мар 18, 11:06    [21285573]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
Konst_One,

Все оказалось банально просто:
select convert (XML,REPLACE(REPLACE(convert (varchar(max),XML_COLUMN), CHAR(13), ''), CHAR(10), ''))
from TABLE 
26 мар 18, 17:25    [21287242]     Ответить | Цитировать Сообщить модератору
 Re: Удаление абзацов в поле типа XML при выводе данных  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
я вам это уже давал ранее.
я только не понимаю, зачем это вам надо делать на сервере.
это не правильно.
26 мар 18, 17:45    [21287322]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить