Sql server 通过CLR将不可打印的sybol(enter)从C#返回到SQL Server
我有以下CLR功能:Sql server 通过CLR将不可打印的sybol(enter)从C#返回到SQL Server,sql-server,sql-server-2005,clr,Sql Server,Sql Server 2005,Clr,我有以下CLR功能: [Microsoft.SqlServer.Server.SqlFunction] public static SqlString PrintText(SqlString text) { // Put your code here return new SqlString(text.Value); } [Microsoft.SqlServer.Server.SqlFunction] 公共静态SqlString打印
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlString PrintText(SqlString text)
{
// Put your code here
return new SqlString(text.Value);
}
[Microsoft.SqlServer.Server.SqlFunction]
公共静态SqlString打印文本(SqlString文本)
{
//把你的代码放在这里
返回新的SqlString(text.Value);
}
我想在传递'\r\n'
'\r\n'
去吧。但是相反,我得到了'\r\n'
'\r\n'
你能告诉我这个密码有什么问题吗
谢谢。您可以随时:
return new SqlString(text.Value.Replace("\\r\\n", "\r\n"));
你可以随时:
return new SqlString(text.Value.Replace("\\r\\n", "\r\n"));
在T-SQL中,不会将换行符写为\r\n
。而是使用换行符:
'this
is a
string
in SQL
with
line breaks'
如果将带有\r\n
的字符串传递给C代码,则不会发生任何神奇的事情,它不会自动转换。反斜杠字符与其他字符一样。当您在代码中的文字字符串中使用反斜杠时,编译器将其用作转义码,并将控制字符放入实际字符串中。在T-SQL中,您不会将换行符写成\r\n
。而是使用换行符:
'this
is a
string
in SQL
with
line breaks'
如果将带有\r\n
的字符串传递给C代码,则不会发生任何神奇的事情,它不会自动转换。反斜杠字符与其他字符一样。当您在代码中的文字字符串中使用反斜杠时,编译器将其用作转义码,并将控制字符放入实际字符串中。从SQL端,您可以将char(13)+char(10)
插入T-SQL文字,如下所示:
DECLARE@text varchar(100)
SET@test='this'+char(13)+char(10)
+'是'+char(13)+char(10)
+字符串+字符(13)+字符(10)
+“in-SQL”+char(13)+char(10)
+'带'+char(13)+char(10)
+“换行”
虽然这是可行的,但它比Guffa的回答要详细得多
但是,此技术也可用于将默认代码页的任何字符插入字符串中。函数CHAR(int)
接受0到255之间的任何整数。超出该范围的值将导致它返回null。函数NCHAR(int)
最多接受65535个值,并将相应的unicode字符插入到unicode字符串中。函数ASCII(char)
和UNICODE(nchar)
执行反向操作。从SQL端,您可以将char(13)+char(10)
插入T-SQL文本,如下所示:
DECLARE@text varchar(100)
SET@test='this'+char(13)+char(10)
+'是'+char(13)+char(10)
+字符串+字符(13)+字符(10)
+“in-SQL”+char(13)+char(10)
+'带'+char(13)+char(10)
+“换行”
虽然这是可行的,但它比Guffa的回答要详细得多
但是,此技术也可用于将默认代码页的任何字符插入字符串中。函数CHAR(int)
接受0到255之间的任何整数。超出该范围的值将导致它返回null。函数NCHAR(int)
最多接受65535个值,并将相应的unicode字符插入到unicode字符串中。函数ASCII(char)
和UNICODE(nchar)
执行反向操作。您在函数中提供的实际代码是什么?如果是这样,它所做的就是输出输入的值。但是输入\r\n我希望它是输入符号,但不是。即使我把'1'+字符(13)+字符(10)+'2'传递给它,我也得不到我想要的。我想知道如何实现这个目标。你提供的是你函数中的实际代码吗?如果是这样,它所做的就是输出输入的值。但是输入\r\n我希望它是输入符号,但不是。即使我把'1'+字符(13)+字符(10)+'2'传递给它,我也得不到我想要的。我想知道如何实现这个目标。