我尝试使用sql查询编写报告
SELECT
r.PostCode,
r.Email
FROM dbo.tbl_RegisterMain_Holding as r
Where r.PostCode LIKE @PostCode AND RegisterType = '2'
运行报告时,您可以输入多个邮政编码进行搜索,但是我没有得到任何结果。
我只想搜索邮政编码的前3或4个字母。 任何想法为什么这不会带来数据?非常感谢 感谢
答案 0 :(得分:2)
如果@PostCode包含要搜索的SINGLE邮政编码/片段,并假设您要搜索与该值匹配的匹配项,请尝试:
Where r.PostCode LIKE @PostCode + '%' AND RegisterType = '2'
如果@PostCode包含要搜索的多个邮政编码/片段(例如" AB,AC,AD"),那么这种方法将不起作用,您需要先将它们分成各个值的方法匹配。您可以使用我已概述的here方法之一,但JOIN将使用LIKE而不是等于。
修改:
由于它们以逗号分隔,因此您需要沿着上面链接中列出的其中一条路线前进。有三个选项可用于传递多个值:CSV(按原样),XML或表值参数。表值参数是恕我直言的最佳路线。但假设您坚持使用CSV,那么结束SQL将是(需要fnSplit函数):
SELECT r.PostCode, r.Email
FROM dbo.tbl_RegisterMain_Holding as r
JOIN dbo.fnSplit(@Postcode, ',') t ON r.PostCode LIKE t.Item + '%'
答案 1 :(得分:-1)
LIKE
运算符搜索模式。因此,您必须将通配符添加到var @PostalCode
。
尝试:
SELECT r.PostCode, r.Email FROM dbo.tbl_RegisterMain_Holding as r
WHERE r.PostCode LIKE '%' + @PostCode + '%' AND RegisterType = '2'