У меня есть резервная копия базы данных, которую я восстановил в 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> '
это не работает.
- Как узнать, что это за символы до
<
или после >
? - Как я могу удалить их, не зная, что это за символы?
Спасибо за вашу помощь.
Хороших выходных.
Кристоф