Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 空间存在或不存在时搜索邮政编码_Sql - Fatal编程技术网

Sql 空间存在或不存在时搜索邮政编码

Sql 空间存在或不存在时搜索邮政编码,sql,Sql,我正在运行一个sql搜索查询,以查找与邮政编码匹配的记录 假设我有一个邮政编码: “CB4 1AB” 如果数据库有(带空格和不带空格) cb41ab cb4 1ab 或者我搜索(有空格和没有空格) cb41ab cb4 1ab 我想让它把唱片带回来 我怎么做 select addr1, addr2, postcode from addresses p where p.postcode LIKE 'cb%' 谢谢您可以尝试以下方法: select addr1, addr2, postc

我正在运行一个sql搜索查询,以查找与邮政编码匹配的记录 假设我有一个邮政编码:

“CB4 1AB”

如果数据库有(带空格和不带空格)

  • cb41ab
  • cb4 1ab
或者我搜索(有空格和没有空格)

  • cb41ab
  • cb4 1ab
我想让它把唱片带回来

我怎么做

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

谢谢

您可以尝试以下方法:

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

您可以尝试以下方法:

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, ' ', '')

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

所以,听起来你要这么做。扩展其他答案:

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

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

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

我不清楚这个问题,所以我有多个答案:
a)如果您查找特定的英国邮政编码,请这样做:如“cb4%1ab”。两个版本都将返回(“间隔”和wo.space)。
b)如果您使用像“cb%”这样的值,也不会给您带来任何麻烦。字段将返回值,该值可能包含空格,也可能不包含空格。
c)如果您想查找一个post code,特别是有或没有空格的post code,比如“cb4_1%”,对于没有空格的post codes,比如“cb41%”,或者更好的做法是查找字段大小(6个字符长或7个字符),使长度([fieldname])=6[或7]
d) 用户输入一个邮政编码,您不知道值中是否有空格:我认为需要修改代码,不应该在SQL/Server端进行排序。如果不可能,由其他人添加替换即可。如果在您的情况下“d”和“a”都为真,请使用REPLACE将空格改为“%”,这样无论输入是什么以及在db中存储了什么(字段值有或没有空格),您都将得到结果

最后但并非最不重要的一点,只是一个建议:如果您有机会“统一”字段值,就这样做(将字段最大长度设置为6和/或更新表格并从值中删除空格)

希望这有帮助


[编辑:添加了“d”选项:)]

这个问题我不清楚,所以我有多个答案:
a)如果您要查找特定的英国邮政编码,请这样做:如“cb4%1ab”。两个版本都将返回(“间隔”和wo.space)。
b)如果您使用像“cb%”这样的值,也不会给您带来任何麻烦。字段将返回值,该值可能包含空格,也可能不包含空格。
c)如果您想查找一个post code,特别是有或没有空格的post code,比如“cb4_1%”,对于没有空格的post codes,比如“cb41%”,或者更好的做法是查找字段大小(6个字符长或7个字符),使长度([fieldname])=6[或7]
d) 用户输入一个邮政编码,您不知道值中是否有空格:我认为需要修改代码,不应该在SQL/Server端进行排序。如果不可能,由其他人添加替换即可。如果在您的情况下“d”和“a”都为真,请使用REPLACE将空格改为“%”,这样无论输入是什么以及在db中存储了什么(字段值有或没有空格),您都将得到结果

最后但并非最不重要的一点,只是一个建议:如果您有机会“统一”字段值,就这样做(将字段最大长度设置为6和/或更新表格并从值中删除空格)

希望这有帮助


[编辑:添加了“d”选项:)]

搜索时是否只替换空格<代码>在何处替换(p.postcode,“”),如“cb%”?除了…,您的输出是什么。。。?将示例输出放在您的帖子中,这样可以避免混淆…搜索时只需替换空格<代码>在何处替换(p.postcode,“”),如“cb%”?除了…,您的输出是什么。。。?将示例输出放在您的帖子中,这样可以避免混淆。。。