Возврат непечатаемого символа (ввод) в SQL Server из C # через CLR - PullRequest
1 голос
/ 29 января 2010

У меня есть следующая функция CLR:

<code>    [Microsoft.SqlServer.Server.SqlFunction]
    public static SqlString PrintText(SqlString text)
    {
        // Put your code here
        return new SqlString(text.Value);
    }

И я хочу получить символ ввода при прохождении

<code>'\r\n'
к этому. Но я получаю
<code>'\r\n'
Не могли бы вы сказать мне, что не так с этим кодом.

Спасибо.

Ответы [ 3 ]

1 голос
/ 29 января 2010

В T-SQL разрыв строки не пишется как \r\n. Вместо этого вы просто используете разрыв строки:

'this
is a
string
in SQL
with
line breaks'

Если вы передаете строку с \r\n в код C #, ничего волшебного не происходит, она автоматически не конвертируется. Символ обратной косой черты - это просто персонаж, как любой другой. Когда вы используете обратную косую черту в литеральной строке в коде, компилятор использует ее как escape-код и помещает управляющие символы в фактическую строку.

0 голосов
/ 06 ноября 2014

Со стороны SQL вы можете вставить char(13) + char(10) в свои литералы T-SQL следующим образом:

DECLARE @text varchar(100)

SET @test = 'this' + char(13) + char(10)
    + 'is a' + char(13) + char(10)
    + 'string' + char(13) + char(10)
    + 'in SQL' + char(13) + char(10)
    + 'with' + char(13) + char(10)
    + 'line breaks'

Хотя это работает, оно гораздо более многословно, чем ответ Гуффы.

Однако этот метод также можно использовать для вставки любого символа кодовой страницы по умолчанию в строку. Функция CHAR(int) принимает любое целое число от 0 до 255. Значения вне этого диапазона приводят к тому, что он возвращает ноль. Функция NCHAR(int) принимает значения до 65535 и вставляет соответствующие символы unicode в строку Unicode. Функции ASCII(char) и UNICODE(nchar) выполняют обратные операции.

0 голосов
/ 29 января 2010

Вы всегда можете:

return new SqlString(text.Value.Replace("\\r\\n", "\r\n"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...