Sql 把句子分成不同的词
下面是我的字符串,我需要检索TX作为state,78681作为zip,usa作为country “5-D系统公司,德克萨斯州圆岩3200室Chisholm Trail 1号,邮编:78681USA” 任何人都可以使用子字符串函数或任何其他方法来帮助实现此功能吗?谢谢您可以使用:Sql 把句子分成不同的词,sql,sql-server,Sql,Sql Server,下面是我的字符串,我需要检索TX作为state,78681作为zip,usa作为country “5-D系统公司,德克萨斯州圆岩3200室Chisholm Trail 1号,邮编:78681USA” 任何人都可以使用子字符串函数或任何其他方法来帮助实现此功能吗?谢谢您可以使用: select right(str, 3) as country, left(right(str, 9), 5) as zip, left(right(str, 12), 5) as state
select right(str, 3) as country,
left(right(str, 9), 5) as zip,
left(right(str, 12), 5) as state
根据空格和换行符的不同,数字可能会有一点偏差。如果您确定字符串中的最后三个值依次为state、postcode和country,则可以使用一种方法来获取最后三个值,以空格分隔-请记住,不同的国家对州和邮政编码有不同的标准,例如,VIC 3000澳大利亚 请注意,数据越不干净,情况就越糟,例如错误就越多 SQL Server很容易找到第一个空格,例如CHARINDEX“”、yourstring,但在查找最后一个空格时遇到问题。我发现使用分隔符获取最后一个值的最简单方法是使用 首先对整个地址字符串进行反转。上述结果将为“ASU 18687 XT,kcoR dnuoR 0023 etiuS,利亚特mlohsihC 1 cnI,斯梅特赛D-5” LTRIM字符串以删除前导和尾随空格 现在, 第一个完整空间的所有内容都是国家——“ASU”。将其反转以获得您的国家—“美国” 删除与国家/地区长度匹配的前几个字符,例如,使用填充或子字符串,然后删除结果以删除前导空格在“ASU”和“18687”之间有大量空格等 对于邮政编码和州,请再次重复。
你需要修正你的设计。单独存储这些数据点,而不是存储在单个地址列中。不太可能每个人都会以统一的方式更正他们的地址,这是不可能发生的,所以最好是使用机器学习算法或真实的人。这是自然语言处理的一个特别复杂的领域;简单的子字符串不太可能解释邮政地址中存在的大量“边缘”情况。考虑用一个机器学习模型/库A解析SQL Server之外。你有许多字符串解析问题,所以你可以接触到可用的功能。您在tsql方面也有丰富的经验。努力-这不是一个免费的编码写作服务,我的想法是它是免费的编码写作服务。永远不要看我的经验