SQL WHERE BETWEEN不select所有数据

我已经在范围内工作的应用程序中编写了导出(Access to Excel)function。

用户有4个RadioButtons :AF,GM,NR和SZ。

假设用户select了rbtnAF ,它会将所有客户加载到Customer_Code字段以A,B,C,D,E或F开始的网格中。

加载数据的代码如下所示:

 Dim strFields As String = "[Customer_Addresses].[Cust_Code], [Customers].[Customer_Name], [Customer_Addresses].[Contact_Code], [Customer_Addresses].[Contact_Name], " & _ "[Customer_Addresses].[Contact_Type], [Customer_Addresses].[Add1], [Customer_Addresses].[Add2], [Customer_Addresses].[Add3], [Customer_Addresses].[Add4], " & _ "[Customer_Addresses].[Add5], [Customer_Addresses].[Postcode], [Customer_Addresses].[Country], [Customer_Addresses].[Telephone], [Customer_Addresses].[Fax], " & _ "[Customer_Addresses].[Email], [Customer_Addresses].[Mobile_Phone], [Customers].[Customer_Category], [Customers].[Average_Payment_Terms], " & _ "[Customers].[Notes], [Customers].[salesRep], [Customers].[hoEmail], [Customers].[webpage] FROM Customers " & _ "INNER JOIN Customer_Addresses ON [Customers].[Customer_Code] =[Customer_Addresses].[Cust_Code]" If rbtnAF.Checked = True Then sql = "SELECT " & strFields & " WHERE [Customer_Addresses].[Cust_Code] BETWEEN " & _ "'A*' AND 'F*' ORDER BY [Customer_Addresses].[Cust_Code]" Dim da As New OleDbDataAdapter(sql, con) Dim ds As New DataSet Dim dt As New System.Data.DataTable da.Fill(ds) dt = ds.Tables(0).Copy() ugExport.DataSource = Nothing ugExport.DataSource = dt 

这是,我认为,工作正常,我能够正确的范围加载到网格,并导出它们,如我所愿。 但是,用户已经回到我的身边,并表示没有加载所有的客户。

我觉得这有点奇怪,所以我加载了他们的数据库,并为自己testing。 在数据库中,有4位客户符合AF的范围,如图所示。

在这里输入图像说明

但是,当我在导出列表中查看客户范围AF时,只显示2个客户。

在这里输入图像说明

另外值得注意的是,在客户列表屏幕中有一个TextBox允许用户通过客户代码进行search – 当我input一个F时,所有4个客户都按预期显示。

尽pipe有4条符合条件的logging,但是地球上究竟只在“出口清单”中显示2条结果呢?

检查之间的语法,你会发现它把*作为文字字符看到这里https://support.office.com/en-us/article/Between-And-Operator-a435878d-63f7-4825-8c31-999432ae8223

您可以使用

 Like "[AF]*" 

相反,虽然。