搜索邮政编码,当空间存在或者不存在

问题描述:

进出口运行一个sql搜索查询,弹出匹配邮编 说,记录我有一个邮政编码:搜索邮政编码,当空间存在或者不存在

“CB4 1AB”

如果数据库有(有和没有空格)

  • cb41ab
  • CB4 1AB

或我(有和没有空格)搜索

  • cb41ab
  • CB4 1AB

我希望它带回记录

我该怎么办呢?

select addr1, addr2, postcode 
from addresses p 
where p.postcode LIKE 'cb%' 

感谢

+1

只需在搜索时替换空格? REPLACE(p.postcode,'','')LIKE'cb%''? – LittleBobbyTables 2013-04-24 14:08:08

+0

除了...之外的输出是什么?将示例输出放在Post中,然后避免混淆...... – Pandian 2013-04-24 14:13:08

你可以尝试这样的事情:

select addr1, addr2, postcode 
from addresses p 
where replace(p.postcode, ' ', '') LIKE 'cb41ab' 

所以,它听起来就像你要争取。扩大其他答案:

DECLARE @input VARCHAR(50) 
SET @input = 'CB4 1AB' 

SELECT addr1, addr2, postcode 
FROM addresses p 
WHERE REPLACE(p.postcode, ' ', '') = REPLACE(@input, ' ', '') 

编辑:我删除了“喜欢”,因为这应该涵盖以上所有情况。

这个问题不清楚,所以我有多个答案:
a)如果你寻找一个特定的英国邮政编码,像这样:像'cb4%1ab'。两个版本都会返回(“间隔”和“空格”)。
b)如果你使用LIKE“%CB”不会给任何烦恼不是。字段将返回它的值或者没有空格。
c)如果你想找到一个邮政编码,具体有没有空间说LIKE'cb4_1%'为空间的邮政编码和LIKE'cb41%'邮政编码没有空间 - 或者甚至更好查找字段大小,而不是(6个字符长或7),因此LENGTH([字段名])= 6 [或7]
d)用户输入一个邮政编码和您不知道,如果值具有或中没有任何空间:我'说代码修改是必要的,不应该在SQL/Server端进行整理。如果不可能,别人添加的REPLACE就好了。如果“d”和“a”是你的情况属实,使用replace改变空间变成“%”,所以无论输入是和whatver存储在数据库(字段值或没有空间),你会得到结果

最后但并非最不重要的,只是一个建议:如果你有机会到“均匀化”字段的值,它做的(集字段最大长度为6个和/或更新表和值删除空间)

希望这有助于!

[编辑:添加'd'选项:)]