插入语句组合逻辑

本文关键字:组合 语句 插入 | 更新日期: 2023-09-27 18:00:04

好的,所以我使用C#将信息插入数据库服务器中的表中。它根据添加到其中的一堆if语句创建SQL命令。我在干净地创建语句时遇到了问题。我知道要在SQL Server中组合Insert语句,我们使用:

INSERT INTO myTable 
SELECT 'value1', 'value2'
UNION ALL
SELECT 'value3', 'value4'
UNION ALL 
SELECT
etc

我的问题是对它们进行排序,以便无论通过哪个if语句,该语句都能工作。例如,

function()
string sqltext = "INSERT INTO myTable"
if(cond1)
{ sqltext=sqltext + "SELECT 'v1', 'v2' UNION ALL" }
else if (cond2) {
sqltext = sqltext + "SELECT 'v3', 'v4' UNION ALL" }

在这种情况下,如果任意一个条件本身返回,则该语句将不起作用,因为该语句将以UNIONALL结尾。我希望这是有道理的。想法?

插入语句组合逻辑

列出所选

string sqltext = "INSERT INTO myTable";
List<string> selectList = new List<string>();

if(cond1)
{
    selectList.Add("SELECT 'v1', 'v2' UNION ALL");
    ...

最后是

string selectStatement = string.Join(" UNION ALL ", selectList.ToArray());
sqltext = sqltext + " " + selectStatement;

在生成"UNION ALL"后从sqltext中删除它。

                if(sqltext .Trim().EndsWith("UNION ALL")) {
                    sqltext = sqltext.Remove(s.LastIndexOf("UNION ALL"));
                }

此外,作为附带说明,我建议使用StingBuilder,而不是使用+进行字符串连接。