SQL:LIKE where条件指定一个字母后跟一个数字后跟其他什么?

时间:2010-06-25 08:39:20

标签: sql sql-server tsql

是否可以在MS SQL Server中编写一个WHERE条件来获取以下行:

  • 以指定的字母开头
  • 然后有一个小数
  • 然后其他任何事情

我基本上有一个包含邮政编码的表格,我想要所有属于伯明翰的邮政编码 - B后跟一个数字。一些邮政编码在那里开始B,然后是另一个不属于伯明翰的字母,所以我不能简单地使用LIKE 'B%'

谢谢!

5 个答案:

答案 0 :(得分:8)

使用LIKE'B [0-9]%'。 “[0-9]”表示范围“0” - “9”中的任何字符。

另外请记住,(a)在某些情况下,有人会输入“O”而不是“0”,并且可能有一些国际邮政编码也以B和数字开头,所以如果你我有一个可靠的国家领域,你也应该检查一下:)是的,我经常使用邮政编码:)

答案 1 :(得分:2)

根据维基百科关于B postcode area的文章:

  • B39无效
  • B95是Henley-in-Arden,
    埃文河畔斯特拉特福 - 你愿意吗 考虑到Henley-in-Arden“属于中 到伯明翰“?(也许是,我 真的不知道)

最安全的做法是扩展您认为是伯明翰的代码:

postcode LIKE 'B1 %'
OR postcode LIKE 'B2 %'
OR postcode LIKE 'B3 %'
...
OR postcode LIKE 'B10 %'
OR postcode LIKE 'B11 %'
OR postcode LIKE 'B12 %'
...

这些前缀当然可以存储在表格中。

答案 2 :(得分:0)

我认为你可以这样做:

Select * From PostCodes
Where PostCode Like 'B[0-9]%'

答案 3 :(得分:0)

MySQL内置了正则表达式(REGEXP / RLIKE)。我认为您可以将功能添加到其他人,例如SQL Server。

这会给你更多精确度,例如

SELECT * FROM PostCodes WHERE PostCode RLIKE '^B[[:digit:]]{1,2}[:space:]'

这也可以在条件下更好地匹配可能的拼写错误。

答案 4 :(得分:-1)

SELECT postc FROM postcodes WHERE postc LIKE 'B[0-9]*%';

这些方面的东西!

你也可以这样做:

SELECT
    postc as ps,UPPER(SUBSTR(ps),1,1) as firstLetter,SUBSTR(ps,2,1) as secondNumber
FROM
    postcodes
WHERE
    firstLetter = 'B' AND secondNumber LIKE '[0-9]%'

他们沿线的东西。