MySQL,其中IN只返回最后一行

MySQL,其中IN只返回最后一行,mysql,Mysql,我有一张邮政编码表以及它们的纬度和经度。 用户将邮政编码列表发布到多行文本框中,然后创建一个列表并将其输入到sql=“从地理编码中选择邮政编码、纬度、经度,其中邮政编码位于(“&PCList&”)” PCList的格式为 'AL7 2BQ ','B12 9BS ','B14 7QU ','B21 9SF ','B24 9PJ ','B27 7RR ' ,'B33 0NG ','B42 1NN ','B63 4RH ','B64 5AB ','B65 0LG ','B70 9QL ' ,'B73

我有一张邮政编码表以及它们的纬度和经度。 用户将邮政编码列表发布到多行文本框中,然后创建一个列表并将其输入到
sql=“从地理编码中选择邮政编码、纬度、经度,其中邮政编码位于(“&PCList&”)”

PCList的格式为

 'AL7 2BQ ','B12 9BS ','B14 7QU ','B21 9SF ','B24 9PJ ','B27 7RR '
,'B33 0NG ','B42 1NN ','B63 4RH ','B64 5AB ','B65 0LG ','B70 9QL '
,'B73 5AB ','B79 7AG ','BH1 1EN ','BH1 4SX ','BH9 2HE ','BL1 8TH '
,'BL3 6JR ','BL4 9HF ','BL5 3YY ','BL8 2EQ ','BN2 5TB ','BN9 0AD' etc.
我只知道最后一个邮政编码。我尝试过MysqlDatareader、Datasets,mySQL字符串在workbench中返回完整列表

如果我将sql替换为“
从地理编码中选择邮政编码、纬度、经度,其中邮政编码为'B65%'
”,那么我会在datareader或数据集中得到一个从B65开始的邮政编码的完整列表,但无法让它在mySQL中工作

代码如下:-

Protected Sub ShowLocsButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ShowLocsButton.Click
    Dim PCList As String = Replace(Me.PostcodeListTextBox.Text, vbCrLf, "','")
    PCList = "'" & PCList & "'"
    GetMarkers(PCList) 
End Sub

Protected Sub GetMarkers(ByVal PCList As String)
Dim PointsDs As New DataSet
    Dim PointsDa As MySqlDataAdapter
    Dim ConnString As String = ConfigurationManager.ConnectionStrings("ConnString").ConnectionString
    Dim conn As New MySqlConnection(ConnString)
    command.Connection = conn
    If conn.State <> ConnectionState.Open Then
        conn.Open()
    End If
    sql = "SELECT postcode, latitude,longitude FROM geocodes WHERE postcode IN (" & PCList & ")"
    command.CommandText = sql
    PointsDR = command.ExecuteReader()
    'Dim myrow As Integer = 0
    Me.VRPMap.Layers.Clear()
    'MsgBox(PointsDs.Tables(0).Rows.Count)
    While PointsDR.Read
        Dim myPostcode As String = PointsDR.GetString(0)
        Dim myLatitude As String = PointsDR.GetValue(1)
        Dim myLongitude As String = PointsDR.GetValue(2)
    End While
    conn.Close()
Protected Sub ShowLocsButton_Click(ByVal sender作为对象,ByVal e作为System.EventArgs)处理ShowLocsButton。单击
Dim PCList As String=Replace(Me.PostcodeListTextBox.Text,vbCrLf,“,”)
PCList=“”&PCList&“”
获取标记(PCList)
端接头
受保护的子GetMarkers(ByVal PCList作为字符串)
Dim PointsDs作为新数据集
Dim PointsDa作为MySqlDataAdapter
Dim ConnString As String=ConfigurationManager.ConnectionString(“ConnString”).ConnectionString
Dim conn作为新的MySqlConnection(ConnString)
command.Connection=conn
如果连接状态连接状态打开,则
康涅狄格州公开赛
如果结束
sql=“从邮政编码所在的地理编码(“&PCList&”)中选择邮政编码、纬度和经度”
command.CommandText=sql
PointsDR=command.ExecuteReader()
'将myrow设置为整数=0
Me.VRPMap.Layers.Clear()
'MsgBox(PointsDs.Tables(0.Rows.Count)
边读边读
Dim myPostcode As String=PointsDR.GetString(0)
Dim myLatitude作为字符串=PointsDR.GetValue(1)
Dim MyLength作为字符串=点SDR.GetValue(2)
结束时
康涅狄格州关闭

end sub

它是训练空间,在我的字符串创建中用vbcrlf替换了vblf,问题解决了

这个问题是由我们看不到的代码引起的。什么是
&PCList&
是每个邮政编码缩进的最后一个空格吗?我刚刚注意到邮政编码字符串中的尾随空格,但这并不影响mySQL返回完整的列表。不起作用,语法错误为%。我认为这取决于每篇文章中的尾随空间,如果我删除它们,它会起作用,因此我的代码Dim PCList As String=Replace(Me.postcodelistextbox.Text,vbLf,“,”))PCList=“””&PCList&“””在没有尾随空间的情况下不会返回正确的值。
sql = "SELECT postcode, latitude,longitude FROM geocodes WHERE postcode IN (" % PCList % ")"