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中连接长字符串的正确方法是什么。
可以使用内置的 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 中出现大量条件格式。