Замена космического символа в SQL Server - PullRequest
0 голосов
/ 01 марта 2020

У меня есть резервная копия базы данных, которую я восстановил в SQL Server 2014, и я использую SQL Server Management Studio 18 (15.0.18206.0)

В столбце типа text строки XML файлы сохранены. Да, я знаю, что тип данных text устарел. Но я не могу так легко изменить тип данных в старой программе.

Теперь я хочу удалить строку <SCHNITTLINIE>.

В ячейке это выглядит так: ..._MIN> <SCHNITTLINIE> <S...

SELECT CAST(REPLACE(CAST(xml AS NVARCHAR(MAX)), '<SCHNITTLINIE>', '') AS TEXT)
FROM [dbo].[XMLdatei]
WHERE xml LIKE '%SCHNITTLINIE%'.

В результате получаю : ...MIN> <S...

Пока все хорошо.

Я бы тоже хотел убрать "пробелы".

SELECT CAST(REPLACE(CAST(xml AS NVARCHAR(MAX)), ' <SCHNITTLINIE> ', '') AS TEXT)
FROM [dbo].[XMLdatei]
WHERE xml LIKE '%SCHNITTLINIE%'

Теперь он находит строку '', но не больше.

В начале ячейки находится <?xml version="1.0". Поэтому я попробовал следующее для проверки пробелов:

SELECT CAST(REPLACE(CAST(xml AS NVARCHAR(MAX)), 'xml ', 'xxx') AS TEXT)
FROM .[dbo].[XMLdatei].
WHERE xml LIKE '%SCHNITT%'.

В результате я получил следующее: <?xxxversion="1.0"

Следующее также работает:

SELECT CAST(REPLACE(CAST(xml AS NVARCHAR(MAX)), 'xml' + char(32), 'xxx') AS TEXT)
FROM [dbo].[XMLdatei]
WHERE xml LIKE '%SCHNITT%'

Проверьте, тест прошел успешно. :)

Только со строкой ' <SCHNITTLINIE> ' это не работает.

  • Как узнать, что это за символы до < или после >?
  • Как я могу удалить их, не зная, что это за символы?

Спасибо за вашу помощь.

Хороших выходных.

Кристоф

...