SQL Server 2008 中的长字符串串联

本文关键字:字符串 Server 2008 SQL | 更新日期: 2023-09-27 18:36:42

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

string myString = "SELECT column1,"
 + " column2,"
 + " column3,"
 + " column4,"
 + " column5,"
 + " column6,"
 + " FROM table1 t1"
 + " JOIN table2 t2"
 + " ON t1.column1 = t2.column1";

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

SQL Server 2008 中的长字符串串联

可以使用内置的 T-SQL Concat 方法,该方法等效于使用字符串生成器生成字符串。

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

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

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

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

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

  • 地址1
  • 地址2
  • 城市
  • 国家镉
  • 拉链镉
  • 拉链苏夫
  • CntryCd
起初,将

Addr1和Addr2分别放在单独的行上似乎是合乎逻辑的,其次是City,StateCd,ZipCd-ZipSuf,CtryCd。实际上,如果 Addr2 或 ZipSuf 为空,这会导致 SQL 中出现大量条件格式。