首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MySQL查询中使用删除和空格重复单词

在MySQL查询中使用删除和空格重复单词
EN

Stack Overflow用户
提问于 2014-10-27 22:24:31
回答 2查看 183关注 0票数 1

不确定这在MySQL中是否可行,但我有一个列,其业务名称如下:

AT&T商店

奥赖利汽车零部件

汉堡王

我使用MySQL查询将其导入到狮身人面像搜索中。我有MariaDB,所以有一个REGEXP_REPLACE(col,regexp,REGEXP_REPLACE)函数,但是我找不到剩下的。

我需要的是重复单词与非字母数字字符替换和没有空格。因此,上述例子将成为:

ATT商店

OReillys O Reilly的汽车零部件

汉堡王

这在MySQL查询中是可能的吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-28 11:34:47

REGEXP_REPLACE只在MariaDB,MySQL没有它。

代码语言:javascript
运行
复制
select regexp_replace(regexp_replace(
"AT&T Store
O'Reilly's Auto Parts
Burger King",
'([[:alnum:]]+)[[:punct:]]+([[:alnum:]]+)[[:punct:]]+([[:alnum:]]+)',
'\\1\\2\\3 \\1 \\2 \\3'),
'([[:alnum:]]+)[[:punct:]]+([[:alnum:]]+)',
'\\1\\2 \\1 \\2')
票数 1
EN

Stack Overflow用户

发布于 2014-10-28 01:24:23

这可以一次性完成,但可能不是通过SQL原语regex完成的。

我不懂REGEXP_REPLACE,也不懂现代SQL。

通常是由三个正则表达式来完成的。

伪码:

代码语言:javascript
运行
复制
$column_val = "O'Reilly's Auto Parts";
$new_column_val = Replace_Globally(  
                     $column_val,
                     '\b\w+[[:punct:]](?:[[:punct:]]*\w)+\b',  
                     function( $match ) {
                            $val = $match.value;
                            $text1 = Replace_Globally( $val, '[[:punct:]]+', "" ); 
                            $text2 = Replace_Globally( $val, '[[:punct:]]+', " " ); 
                            return $text1 + " " + $text2;
                      }
                  );

因此,这看起来可能不像是sql可以做的事情,所以您可能必须要有创造性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26597898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档