C# SQL Server 2008中的长字符串连接

C# SQL Server 2008中的长字符串连接,c#,sql-server,vb.net,sql-server-2008,C#,Sql Server,Vb.net,Sql Server 2008,我在使用SQL Server 2008数据库的ASP.net应用程序中工作。我知道在.net中,当我们需要进行任何长字符串连接时,我们应该使用StringBuilder,而不是使用“+”或“&”运算符。 前 我想知道这是否也适用于SQL Server,我们也应该避免这种类型的字符串连接?如果是,那么在SQL Server中连接长字符串的正确方法是什么。您可以使用内置的,它相当于使用字符串生成器构建字符串 根据文档,这只在SQL Server 2012或2014中可用,因此在您的情况下,您需要坚持

我在使用SQL Server 2008数据库的ASP.net应用程序中工作。我知道在.net中,当我们需要进行任何长字符串连接时,我们应该使用
StringBuilder
,而不是使用“+”或“&”运算符。 前

我想知道这是否也适用于SQL Server,我们也应该避免这种类型的字符串连接?如果是,那么在SQL Server中连接长字符串的正确方法是什么。

您可以使用内置的,它相当于使用字符串生成器构建字符串


根据文档,这只在SQL Server 2012或2014中可用,因此在您的情况下,您需要坚持使用
+
操作符。

根据我有限的经验,我发现几乎每次我认为应该在SQL查询中连接数据时,我都会发现我应该按原样进行查询,然后在C#land中处理字符串操作。每次连接数据库中的两个结果时,都会增加遇到边缘情况的可能性

例如,考虑一个地址。我的数据库使用以下列存储地址:

  • 地址1
  • 地址2
  • 城市
  • ZipCd
  • 齐普苏夫
  • CntryCd

首先,将Addr1和Addr2分别放在一个单独的行上似乎是合乎逻辑的,然后是City、StateCd、ZipCd、ZipSuf、CtryCd。实际上,如果Addr2或ZipSuf为null,这会导致SQL中出现大量条件格式设置。

我想不出任何理由不使用+

DECLARE  @myString VARCHAR(4000) = 'SELECT column1,'
 + ' column2,'
 + ' column3,'
 + ' column4,'
 + ' column5,'
 + ' column6,'
 + ' FROM table1 t1'
 + ' JOIN table2 t2'
 + ' ON t1.column1 = t2.column1';

就我个人而言,我在执行动态SQL时使用了相当多的这种方法,而且它从未导致任何性能问题。我认为(如果我不正确,也许有人可以纠正我),SQL中的字符串是不可变的,就像它们是.NET语言(这是主要问题,为什么你们通常不教创建大的文本块作为字符串)。你认为“长”是什么?你在连接什么?仅动态SQL字符串?仅供参考,您发布的代码中没有字符串连接。它将在编译时存储为单个字符串。
DECLARE  @myString VARCHAR(4000) = 'SELECT column1,'
 + ' column2,'
 + ' column3,'
 + ' column4,'
 + ' column5,'
 + ' column6,'
 + ' FROM table1 t1'
 + ' JOIN table2 t2'
 + ' ON t1.column1 = t2.column1';