MySQL查询-选择邮政编码匹配项

MySQL查询-选择邮政编码匹配项,mysql,Mysql,我需要根据字段的前2个字符进行选择,例如 从邮政编码为“rh%”的表格中选择* 但这会在“postcode”字段的任何位置选择包含这两个字符的任何记录,对吗?我需要一个只选择前2个字符的查询。有什么建议吗 谢谢您的查询是正确的。它搜索以“rh”开头的邮政编码 相反,如果您想在字段中的任何位置搜索包含字符串“rh”的邮政编码,您可以编写: SELECT * from table WHERE postcode LIKE '%rh%' 编辑: 要回答您的评论,您可以使用%和\进行相对简单的搜索。正如

我需要根据字段的前2个字符进行选择,例如

从邮政编码为“rh%”的表格中选择*

但这会在“postcode”字段的任何位置选择包含这两个字符的任何记录,对吗?我需要一个只选择前2个字符的查询。有什么建议吗


谢谢

您的查询是正确的。它搜索以“rh”开头的邮政编码

相反,如果您想在字段中的任何位置搜索包含字符串“rh”的邮政编码,您可以编写:

SELECT * from table WHERE postcode LIKE '%rh%'
编辑

要回答您的评论,您可以使用
%
\
进行相对简单的搜索。正如您已经注意到的,
%
匹配任意数量的字符,而
\
匹配单个字符

因此,为了匹配以“RHx”(其中x是任意字符)开头的邮政编码,您的查询应该是:

SELECT * from table WHERE postcode LIKE 'RH_ %'
(注意
后面的空格)。对于更复杂的搜索模式,您需要阅读有关正则表达式的内容

进一步阅读:


您的查询是正确的。它搜索以“rh”开头的邮政编码

相反,如果您想在字段中的任何位置搜索包含字符串“rh”的邮政编码,您可以编写:

SELECT * from table WHERE postcode LIKE '%rh%'
编辑

要回答您的评论,您可以使用
%
\
进行相对简单的搜索。正如您已经注意到的,
%
匹配任意数量的字符,而
\
匹配单个字符

因此,为了匹配以“RHx”(其中x是任意字符)开头的邮政编码,您的查询应该是:

SELECT * from table WHERE postcode LIKE 'RH_ %'
(注意
后面的空格)。对于更复杂的搜索模式,您需要阅读有关正则表达式的内容

进一步阅读:


类似于“%rh%”
将在任何位置返回所有带有“rh”的行

类似于“rh%”
将返回所有开头带有“rh”的行

如“%rh”
将返回所有末尾带有“rh”的行

如果只想获取前两个字符“rh”,请使用MySQL SUBSTR()函数

类似于“%rh%”
将在任何位置返回所有带有“rh”的行

类似于“rh%”
将返回所有开头带有“rh”的行

如“%rh”
将返回所有末尾带有“rh”的行

如果只想获取前两个字符“rh”,请使用MySQL SUBSTR()函数
戴夫,你的方法对我来说似乎是正确的(并且对我的测试数据有效)。使用前导%也将匹配字符串中的任何位置,这在处理邮政编码时显然是不可取的。

Dave,您的方法对我来说似乎是正确的(并且适用于我的测试数据)。使用前导%也将匹配字符串中的任何位置,这在处理邮政编码时显然是不可取的。

非常感谢您的回复。是的,似乎查询正在选择任何以“RH”开头的邮政编码字段。这就是我面临的问题:假设我只想要以RH1开头的邮政编码,例如:RH1 3JS RH2 7YH,但我的查询也会选择:RH16 3NP RH17 3TH是否有方法停止在3个字符(或任意数量)后的选择?非常感谢感谢Anax提供的代码和链接,我已经得到了大部分查询的工作方式,我希望现在,干杯。非常感谢您的回复。是的,似乎查询正在选择任何以“RH”开头的邮政编码字段。这就是我面临的问题:假设我只想要以RH1开头的邮政编码,例如:RH1 3JS RH2 7YH,但我的查询也会选择:RH16 3NP RH17 3TH是否有方法停止在3个字符(或任意数量)后的选择?非常感谢感谢Anax提供的代码和链接,我现在已经得到了大部分查询,谢谢!是的,它确实工作正常,但我有进一步的评论(见上文),我还没有测试过它,但您可能会在使用“\ux”时获得一些成功。看,谢谢!是的,它确实工作正常,但我有进一步的评论(见上文),我还没有测试过它,但您可能会在使用“\ux”时获得一些成功。这很有帮助,MySQL SUBSTR()看起来很有前途这很有帮助,MySQL SUBSTR()看起来很有前途