Как сделать так, чтобы результаты сетки показывали «<», а не «<»? - PullRequest
1 голос
/ 25 января 2011

Этот код:

SomeField + ' <' + cast(count(AnotherField) as varchar(6)) + '>'

Создает следующий результат в виде сетки:

Blah &lt;Blah2&gt;

Как я могу убедиться, что объекты HTML отображаются в качестве их символьных эквивалентов?Я удивлен, что не смог найти ответ Google.

Спасибо.

Вот большой фрагмент:

select
   stuff((
      select
         ', ' + SomeField + ' <' + cast(count(AnotherField) as varchar(6)) + '>'
      from
         SomeTable as SomeAbbrev
      where
         SomeField = SomeOutsideField
      group by
         SomeField
      order by
         SomeField asc
      for xml path('')
   ),1,1,'') SomeFields
from
   blablabla
inner join
   blablabla
left join
   blablabla
left join
   blablabla
order by
   SomeDateField asc

Ответы [ 2 ]

2 голосов
/ 26 января 2011

Вы можете посмотреть используемую технику здесь или может быть проще обойти технику XML все вместе и попробовать что-то вроде примера ниже.

Этот пример возвращает все таблицы с их столбцами в виде строки с разделителями-запятыми.

create function dbo.ColumnString(@table_id int)
returns nvarchar(max)
as
begin
    declare @x nvarchar(max)

    select @x = coalesce(@x+',','') + c.name
        from sys.columns c
        where c.object_id = @table_id
        order by c.name

    return @x
end
go

select t.name, dbo.ColumnString(t.object_id)
    from sys.tables t
    where t.type = 'U'
    order by t.name

drop function dbo.ColumnString
1 голос
/ 25 января 2011

Не идеальное решение, но я работаю ...

REPLACE(REPLACE(MyTable.MyColumn, '&lt;', '<'),'&gt;', '>') AS MyColumn

Использование UDF для замены списка HTML-кодов может быть более «чистым» решением.

...