无法使用空格解析城市名称

互联网工程师

我需要从地址字符串中提取城市。

下面的函数将帮助我使用空格作为分隔符来拆分地址。

如果城市名称中没有空格,则下面的代码有效,但是如果城市名称中包含空格,则该代码将无效

CREATE TABLE [dbo].[MyCity](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [City] [varchar](255) NULL,
    [State] [varchar](2) NULL,
 CONSTRAINT [PK_MyCity] PRIMARY KEY NONCLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
SET IDENTITY_INSERT [dbo].[MyCity] ON
INSERT [dbo].[MyCity] ([ID],  [City], [State]) VALUES (480, N'La Fayette', N'IL')
INSERT [dbo].[MyCity] ([ID],  [City], [State]) VALUES (481, N'La Grange', N'IL')
INSERT [dbo].[MyCity] ([ID],  [City], [State]) VALUES (482, N'La Harpe', N'IL')
INSERT [dbo].[MyCity] ([ID],  [City], [State]) VALUES (483, N'East Saint Louis', N'IL')
INSERT [dbo].[MyCity] ([ID],  [City], [State]) VALUES (484, N'Benton', N'IL')
SET IDENTITY_INSERT [dbo].[MyCity] OFF


CREATE FUNCTION [dbo].[ValueSplit](@RepParam nvarchar(4000), @Delim char(1)= ',')
RETURNS @VALUES TABLE (Param nvarchar(4000))AS
   BEGIN
   DECLARE @chrind INT
   DECLARE @Piece nvarchar(4000)
   SELECT @chrind = 1
   WHILE @chrind > 0
      BEGIN
         SELECT @chrind = CHARINDEX(@Delim,@RepParam)
         IF @chrind > 0
            SELECT @Piece = LEFT(@RepParam,@chrind - 1)
         ELSE
            SELECT @Piece = @RepParam
         INSERT @VALUES(Param) VALUES(@Piece)
         SELECT @RepParam = RIGHT(@RepParam,LEN(@RepParam) - @chrind)
         IF LEN(@RepParam) = 0 BREAK
      END
   RETURN
END
GO


DECLARE @Address AS NVARCHAR(255)
DECLARE @City AS NVARCHAR(255)


--Try the 4 addresses. Benton is a city name with no spaces and works.
SET @Address = '896872 STATE HIGHWAY 14 BENTON'
--'896872 STATE HIGHWAY 14 BENTON'
--'9 RR 10 *BOX 81 LA FAYETTE' --This city name cannot be found
--'642 N 60TH EAST SAINT LOUIS' --This city name cannot be found

--
-- Get City Works for Cities with No Spaces, but fails when the city has a space in the name
--                  
SELECT  @City = City
FROM    dbo.MyCity
WHERE   City IN (
        SELECT  param
        FROM    dbo.ValueSplit(REPLACE(@Address,' ', ','), ',') )

SELECT @City

--
-- A look into the raw split
--                                          
SELECT  param
            FROM    dbo.ValueSplit(REPLACE(@Address, ' ', ','), ',') 

例如,当使用以下地址时:9 RR 10 * BOX 81 LA FAYETTE

该函数将在位置6和7返回城市“ La Fayette”

在此处输入图片说明

东圣路易斯在位置4,5和6返回

在此处输入图片说明

如何将提供的字符串中的城市名称与城市表匹配?

埃里克

如果只需要从字符串中提取城市名称,则可以选择以下城市名称

DECLARE @address VARCHAR(100) = '9 RR 10 *BOX 81 LA FAYETTE'

SELECT *
From MyCity
WHERE @Address LIKE '%'+City+'%'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用地理位置在div中显示城市名称

来自分类Dev

使用Google地方信息自动填充API所选城市的城市名称或ID

来自分类Dev

如何使用AV Foundation相机捕获静止图像并以其城市名称保存?

来自分类Dev

寻找没有城市名称的地理地形

来自分类Dev

从我的位置查找城市名称

来自分类Dev

使用maxmind geoip2调出城市名称

来自分类Dev

无法在Android Google地图中获取特定区域的城市名称

来自分类Dev

PHP使用Maxmind Geolite2将城市名称转换为纬度/经度

来自分类Dev

通过位置获取城市名称和国家名称

来自分类Dev

将坐标转换为城市名称?

来自分类Dev

如何在Android中使用Google Map API获取地区或城市名称?

来自分类Dev

根据城市名称谷歌地图获取坐标

来自分类Dev

我想得到城市名称的纬度

来自分类Dev

SQL查询以查找不以元音开头的城市名称列表

来自分类Dev

如何使用R在城市名称向量中找到每个城市的县?

来自分类Dev

使用Openweathermap获取名称包含空格的城市的天气

来自分类Dev

无法从火力的城市名单

来自分类Dev

使用扫描仪读取城市名称

来自分类Dev

使用maxmind geoip2呼出城市名称

来自分类Dev

城市名称作为列标题

来自分类Dev

按位置获取城市名称和国家/地区名称

来自分类Dev

如何在Android中使用Google Map API获取地区或城市名称?

来自分类Dev

使用AsyncTask在后台查找城市名称

来自分类Dev

CLLocation列表中的地点/城市名称

来自分类Dev

返回人口最多的城市名称

来自分类Dev

显示分行最多的城市名称

来自分类Dev

如何从位置更改城市名称语言?

来自分类Dev

无法使用 geograpy(Python) 从文本中提取城市名称

来自分类Dev

无法从网站 (goibibo.com) 中选择城市名称

Related 相关文章

热门标签

归档