Sql 如何替换模式的第一个匹配项

Sql 如何替换模式的第一个匹配项,sql,regex,hive,hiveql,regexp-replace,Sql,Regex,Hive,Hiveql,Regexp Replace,我正在尝试使用regexp\u replace函数清理配置单元表中的一些城市名称 例如,我想将城市名称“圣斯蒂芬斯”改为“圣斯蒂芬斯”,将“S盐湖城”改为“南盐湖城” 我正在尝试用regexp\u替换(城市,'St','Saint')但是在“St Stephens”的例子中,我最终选择了“Saint Saintephens” 类似地,当尝试替换“S盐湖城”的前导S时,我会以“South Southalt Lake City”结尾。您需要添加字符串锚定的开头^,并且不要忘记也包括空格。这将仅替换字

我正在尝试使用regexp\u replace函数清理配置单元表中的一些城市名称

例如,我想将城市名称“圣斯蒂芬斯”改为“圣斯蒂芬斯”,将“S盐湖城”改为“南盐湖城”

我正在尝试用regexp\u替换(城市,'St','Saint')但是在“St Stephens”的例子中,我最终选择了“Saint Saintephens”


类似地,当尝试替换“S盐湖城”的前导S时,我会以“South Southalt Lake City”结尾。

您需要添加字符串锚定的开头
^
,并且不要忘记也包括空格。这将仅替换字符串开头的
St
(St和一个空格):

regexp_replace(city,'^St ','Saint ')
对于您问题中的两个替换,简单的方法是应用
regexp\u replace
两次:

regexp_replace(regexp_replace(city,'^St ','Saint '),'^S ','South ')

你最好把它限制在单词范围内。请尝试查看\b单词边界正则表达式字符。首先需要使用'St'拆分列并将其设为列,然后替换为'Saint'。然后将其浓缩为单列