是否可以在MS SQL Server中编写一个WHERE条件来获取以下行:
我基本上有一个包含邮政编码的表格,我想要所有属于伯明翰的邮政编码 - B后跟一个数字。一些邮政编码在那里开始B,然后是另一个不属于伯明翰的字母,所以我不能简单地使用LIKE 'B%'
。
谢谢!
答案 0 :(得分:8)
使用LIKE'B [0-9]%'。 “[0-9]”表示范围“0” - “9”中的任何字符。
另外请记住,(a)在某些情况下,有人会输入“O”而不是“0”,并且可能有一些国际邮政编码也以B和数字开头,所以如果你我有一个可靠的国家领域,你也应该检查一下:)是的,我经常使用邮政编码:)
答案 1 :(得分:2)
根据维基百科关于B postcode area的文章:
最安全的做法是扩展您认为是伯明翰的代码:
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]%'
他们沿线的东西。