发布于 2014-12-07 23:21:43
这应该会让你开始:
CREATE TABLE NumberTable
(
number INT
);
;WITH Numbers(number) AS
(SELECT 1 AS number
UNION ALL
SELECT number + 1 FROM Numbers WHERE number < 100
)
INSERT INTO NumberTable (number)
SELECT N1.number + ((N2.number - 1) * 100)
FROM Numbers N1, Numbers N2 OPTION(MAXRECURSION 100);
CREATE TABLE MyData
(
id INT IDENTITY PRIMARY KEY,
longitude DECIMAL(7, 4),
latitude DECIMAL(6, 4),
location GEOGRAPHY
);
INSERT INTO MyData (longitude, latitude)
SELECT CAST(NEWID() AS BINARY(8)) % 1800000 * 0.0001,
CAST(NEWID() AS BINARY(8)) % 900000 * 0.0001 FROM NumberTable WHERE number < 101;
UPDATE MyData
SET location =
geography::STPointFromText(
CONCAT('POINT (',
CONVERT(VARCHAR(20), longitude),
' ',
CONVERT(VARCHAR(20), latitude),
')'),
4326)
WHERE location IS NULL;
SELECT
id
, longitude
, latitude
, location.STAsText() locationAsText
FROM MyData;注意目前限制生成记录数量的“100”和"101“。
如果你认为合适,请评论或扩展你的问题。
https://stackoverflow.com/questions/27332944
复制相似问题