我正在尝试将匹配的邮政编码作为表格返回,因此我可以将其与'Where zipCode IN(...)声明一起使用。
angular.module('ngToggle', [])
.controller('AppCtrl',['$scope', function($scope){
$scope.custom = true;
$scope.toggleCustom = function() {
$scope.custom = $scope.custom === false ? true: false;
};
}]);
如果不可能,会有什么选择?
答案 0 :(得分:2)
以下是如何将其转换为内联表值函数的方法。性能优势可能让您感到惊讶。
create function dbo.zipSearch(@zip varchar(12), @mile int)returns table as return
Select ZIP
From zipcode
cross apply
(
select latitude
, longitude
from ZipCode
where Zip = @zip
) LatLong
Where latitude >= LatLong.latitude - (@mile * 0.00569)
and latitude <= LatLong.latitude + (@mile * 0.00569)
and longitude >= LatLong.longitude - (@mile * 0.01629)
and longitude <= LatLong.longitude + (@mile * 0.01629);
以下是一些关于差异的文章。
Multi-statement Table Valued Function vs Inline Table Valued Function
http://sqlmag.com/t-sql/inline-vs-multistatement-table-valued-udfs
答案 1 :(得分:0)
发布该功能的最终版本,以防其他人像我一样撞到同一面墙。感谢@Tab Alleman提示。这是一个语法问题。
create function dbo.zipSearch(@zip varchar(12), @mile int)
returns @tmp TABLE (zipCode varchar(12))
as
begin
declare @ns float = @mile * 0.00569;
declare @ew float = @mile * 0.01629;
declare @ltt float, @lng float;
Select @ltt = latitude, @lng = longitude From ZipCode Where ZIP = @zip;
INSERT @tmp
Select ZIP From zipcode Where latitude >= @ltt - @ns and latitude <= @ltt + @ns and longitude >= @lng - @ew and longitude <= @lng + @ew;
return
end