在VB.NET中使用分部和DISTINCT的MS SQL语句

在VB.NET中使用分部和DISTINCT的MS SQL语句,distinct,partial,Distinct,Partial,我有一个名为Postcodes的表,它有50多万条记录。 在此表中,我有一个名为PostCodeText的列,该列具有以下内容: NG1 1AA NG1 1AB NG1 1AC NG2 1AA NG2 5TH NG17 3LP DE15 4BP NG17 5GL DE19 4EE... 我需要的是一个MSSQL语句,它返回基于部分字符串的DISTINCT匹配。例如:如果我想查找所有不同的NG邮政编码,我想返回: NG1 NG2 NG17 我试过这样的方法: SELECT DISTINCT p

我有一个名为
Postcodes
的表,它有50多万条记录。 在此表中,我有一个名为
PostCodeText
的列,该列具有以下内容:

NG1 1AA
NG1 1AB
NG1 1AC
NG2 1AA
NG2 5TH
NG17 3LP
DE15 4BP
NG17 5GL
DE19 4EE...
我需要的是一个MSSQL语句,它返回基于部分字符串的
DISTINCT
匹配。例如:如果我想查找所有不同的NG邮政编码,我想返回:

NG1
NG2
NG17
我试过这样的方法:

SELECT DISTINCT postcodetext 
FROM postcodes 
WHERE (postcode_text LIKE 'NG%') 
ORDER BY postcodetext
我觉得我可能接近答案,但它还没有,任何帮助将非常感谢。 我还听说像使用一样使用
是一个较慢的选择,而使用
=
有没有比这更快的方法呢?

试试看

选择左侧(postcodetext,CHARINDEX(“”,postcodetext,0))
来自邮政编码
如“NG%”之类的邮政编码文本
按左分组(邮政编码文本,CHARINDEX(“”,邮政编码文本,0))
按邮政编码文本排序
好的,我想我遗漏了一些东西,当我在ManagementStudio中运行时,上面的语句工作得很好(如果我按
删除
订单)。但当我在VB.net代码中运行它时,我遇到了一个问题:

在运行语句并将值分配到我的datatable之后,我使用以下代码:

dt.行中每行的

选择案例选项
案例1'
frmSettings.lstAllPostcodes.Items.Add(rows.Item(“postcodetext”))
frmSettings.ProgBarSettings.Value=i
i=i+1
结束选择
下一个

尝试引用
行.item(“postcodetext”)
时失败。我意识到这与使用的
LEFT
SELECT
语句有关。我想让我的列表框保存部分结果(即
NG1
NG2
NG17
等)

您好,感谢您的回复,但该语句会给我错误消息“Column”postcodes。postcodetext“在ORDER BY子句中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。”:不确定这意味着什么?如果我放弃订单,它会工作!谢谢,但最好是在SQL语句中订购,而不是稍后通过代码订购,但它现在可以工作,所以非常感谢!