【问题标题】:String conversion for SQL select statementSQL select 语句的字符串转换
【发布时间】:2025-12-21 14:55:12
【问题描述】:

我使用 SELECT 语句查询数据库并以以下格式返回结果:name1,name2,name3

根据数据库条目,此结果可能有任意数量的名称:name1,name2...name(n)

我想使用这些数据来查询另一个数据库,如下所示:

SELECT Name, SerialNo, Model FROM InstrumentTable where ID=1 and InstName IN name1,name2,name3

为此,我需要将 name1,name2,name3 转换为 ('name1','name2','name3')

我尝试将字符串拆分为字符串数组

    Dim ref1s As String = cmdf1.ExecuteScalar()
    Dim fields() As String = Nothing
    fields = ref1s.Split(",")

然后将它们连接到一个数组中

For i As Integer = 0 To fields.Count - 1
     MsgBox(String.Concat("'", fields(i), "'"))
 Next

但我还没有弄清楚该怎么做。

在字符串的开头和结尾添加括号应该不是问题,只需将引号添加到每个名称并用逗号分隔它们即可。

谁能帮我解决这个问题?

【问题讨论】:

标签: sql vb.net


【解决方案1】:

你有点早了

For i As Integer = 0 To fields.Count - 1
  fields[i] = String.Concat("'",fields[i],"'")
Next

然后

strValue = fields.Join(',')

【讨论】:

    【解决方案2】:

    用户557425,

    这样的事情可能会为您指明正确的方向:

    Dim lst As List(Of String)
    For i As Integer = 0 to fields.Count - 1
        if i = fields.Count - 1 Then
           lst.Add(fields(i) & "'")
        Else
            lst.Add(fields(i) & "','")
        End if
    Next
    
    Dim sqlSB As StringBuilder
    sqlSB.Append("SELECT * FROM TABLE WHERE BLAH IN(")
    For each s As String in lst
         sqlSB.Append(s)
    Next
    
    'use the stringbuilder as command text in a SqlCommand...
    

    【讨论】: