Я работаю над проектом, и мне нужно экспортировать данные из базы данных SQL Server 2008 r2 в текстовый файл. Клиент требует, чтобы каждая строка имела CHAR(13)+CHAR(10)
в конце. Часть моего кода вызывает пользовательскую функцию для объединения частей данных, которые я пытаюсь получить.
Вот мой основной сценарий:
SELECT DISTINCT
CAST('01' AS CHAR(3))+
CAST(CUSTOMERNAME AS CHAR(10))+
dbo.GETORDERS(CUSTOMERNNUMBER) +
AST('03' AS CHAR(3))+
CAST(ISNULL(ADDRESS_LINE,'') AS CHAR(30))+
CAST(ISNULL(CITY,'') AS CHAR(20))+
CAST(ISNULL(UPPER(STATE),'') AS CHAR(2))+
CAST(ISNULL(ZIP,'')AS CHAR(10))
FROM TABLE1
Ниже мой код функции GETORDERS
. Функция принимает параметр, @CUSTOMERNUM
.
DECLARE @output VARCHAR(max) = ( SELECT
CAST('02' AS CHAR(3)) +
CAST (LEFT(ORDER_FIELD1,40) AS CHAR(40)) +
CAST (LEFT(ORDER_FIELD2,40) AS CHAR(40)) +
CHAR(13)+CHAR(10)
FROM [ORDER_TABLE] ord
WHERE CUSTOMERNUM = @CUSTOMERNUM
FOR XML PATH(''))
SET @output = REPLACE(@output,'
','')
Я могу запустить скрипт, получить результаты для запроса к сетке, скопировать / вставить в NotePad ++, и возвращаемые символы отображаются просто отлично. Смотрите первый скриншот. Заметил, что все строки имеют символы.
Теперь, если я использую запрос к файлу или использую мастер импорта / экспорта, чтобы запустить код. В NOTEPAD ++ возвращаемые символы не отображаются для части, сгенерированной функцией. Смотрите второй скриншот.
Так почему только один из возвращаемых символов отображается только при использовании мастера импорта \ экспорта или запроса в файл? Я мог бы просто «выбрать все» и скопировать / вставить, но генерируется так много данных, что я получаю исключение «недостаточно памяти». Если бы я мог придумать способ автоматизировать это, запросив файл или используя мастер импорта / экспорта, это сэкономило бы мне много времени. Кроме того, мне любопытно, что является причиной проблемы.