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

Откуда:
Сообщений: 186
Привет всем!

Подскажите, пожалуйста, как сравнить две строчки и вывести результат сравнения, если это возможно?
Спасибо!

Пример: Есть 2 строчки с тегами html (я после тегов кавычку ставлю, чтобы в таблице здесь на сайте правильно отобразилось)
Header
Changes: <b'>Fruits</b'><br' /> Changes: <b'>Apples</b'><br' /> Changes: <b>Antonovka300</b>
Changes: <b'>Fruits</b'><br' /> Changes: <b'>Apples</b><br' /> Changes: <b'>Antonovka200</b>
1 июл 18, 18:47    [21534744]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение 2 строк  [new]
LisSp
Member

Откуда:
Сообщений: 186
LisSp
Привет всем!

Подскажите, пожалуйста, как сравнить две строчки и вывести результат сравнения, если это возможно?
Спасибо!

Пример: Есть 2 строчки с тегами html (я после тегов кавычку ставлю, чтобы в таблице здесь на сайте правильно отобразилось)
Header
Changes: <b'>Fruits</b'><br' /> Changes: <b'>Apples</b'><br' /> Changes: <b>Antonovka300</b>
Changes: <b'>Fruits</b'><br' /> Changes: <b'>Apples</b><br' /> Changes: <b'>Antonovka200</b>


И нужен результат такой:
Changes: <b'>Antonovka200</b>
1 июл 18, 18:48    [21534750]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение 2 строк  [new]
aleks222
Member

Откуда:
Сообщений: 855
Элементарно, Ватсон.

1. Разбираешь в табличку через XQuery.
2. Сравниваешь разобранное.
1 июл 18, 18:57    [21534793]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение 2 строк  [new]
LisSp
Member

Откуда:
Сообщений: 186
aleks222
Элементарно, Ватсон.

1. Разбираешь в табличку через XQuery.
2. Сравниваешь разобранное.


мне это надо сделать средствами t-sql
1 июл 18, 19:06    [21534838]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение 2 строк  [new]
LisSp
Member

Откуда:
Сообщений: 186
UP!
2 июл 18, 21:52    [21537864]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение 2 строк  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36696
LisSp
UP!
https://docs.microsoft.com/ru-ru/sql/xquery/xquery-language-reference-sql-server?view=sql-server-2017
2 июл 18, 22:55    [21538032]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение 2 строк  [new]
invm
Member

Откуда: Москва
Сообщений: 9127
LisSp,

declare
 @s1 varchar(300) = 'Changes: <b>Fruits</b>
 Changes: <b>Apples</b>
 Changes: <b>Antonovka300</b>',
 @s2 varchar(300) = 'Changes: <b>Fruits</b>
 Changes: <b>Apples</b>
 Changes: <b>Antonovka200</b>';

with s1 as
(
 select
  c.*
 from
  (select cast('<Changes>' + replace(@s1, 'Changes:', '</Changes><Changes>') + '</Changes>' as xml)) t(x) cross apply
  (select row_number() over (order by (select 1)), n.n.value('text()[1]', 'varchar(300)') from t.x.nodes('Changes/b[1]') n(n)) c(id, s) 
),
s2 as
(
 select
  c.*
 from
  (select cast('<Changes>' + replace(@s2, 'Changes:', '</Changes><Changes>') + '</Changes>' as xml)) t(x) cross apply
  (select row_number() over (order by (select 1)), n.n.value('text()[1]', 'varchar(300)') from t.x.nodes('Changes/b[1]') n(n)) c(id, s) 
)
select
 *
from
 s1 full join
 s2 on s2.id = s1.id and s2.s = s1.s;

Остальное доделаете самостоятельно.
3 июл 18, 10:14    [21538529]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение 2 строк  [new]
LisSp
Member

Откуда:
Сообщений: 186
invm
LisSp,

declare
 @s1 varchar(300) = 'Changes: <b>Fruits</b>
 Changes: <b>Apples</b>
 Changes: <b>Antonovka300</b>',
 @s2 varchar(300) = 'Changes: <b>Fruits</b>
 Changes: <b>Apples</b>
 Changes: <b>Antonovka200</b>';

with s1 as
(
 select
  c.*
 from
  (select cast('<Changes>' + replace(@s1, 'Changes:', '</Changes><Changes>') + '</Changes>' as xml)) t(x) cross apply
  (select row_number() over (order by (select 1)), n.n.value('text()[1]', 'varchar(300)') from t.x.nodes('Changes/b[1]') n(n)) c(id, s) 
),
s2 as
(
 select
  c.*
 from
  (select cast('<Changes>' + replace(@s2, 'Changes:', '</Changes><Changes>') + '</Changes>' as xml)) t(x) cross apply
  (select row_number() over (order by (select 1)), n.n.value('text()[1]', 'varchar(300)') from t.x.nodes('Changes/b[1]') n(n)) c(id, s) 
)
select
 *
from
 s1 full join
 s2 on s2.id = s1.id and s2.s = s1.s;

Остальное доделаете самостоятельно.


Вы-гений! Спасибо большое!
3 июл 18, 20:48    [21540519]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить