修剪单词之间的额外空格

时间:2015-02-10 18:21:55

标签: mysql sql

尝试删除字符串中的额外空格,例如

1. AMERICAN RESTAUR               ANT --->   AMERICAN RESTAURANT
2. SCHOOL OF          BUSINESS   ---->  SCHOOL OF BUSINESS
3. COMMUNITY SE     RVICE  ----> COMMUNITY SERVICE
4. THE RINK-LAKEWOO           D ----> THE RINK-LAKEWOOD

我使用以下链接删除了MySQL : how to remove double or more spaces from a string?

我可以使用上面链接

中的一个功能直到这个
1. AMERICAN RESTAUR               ANT --->   AMERICAN RESTAURANT
2. SCHOOL OF          BUSINESS   ---->  SCHOOL OF BUSINESS
3. COMMUNITY SE     RVICE  ----> COMMUNITY SE RVICE
4. THE RINK-LAKEWOO           D ----> THE RINK-LAKEWOO D

你能帮帮我吗。

3 个答案:

答案 0 :(得分:1)

这对我有用

trim(preg_replace('/[\s\t\n\r\s]+/', ' ', $text_to_clean_up)) 

您可以替换或删除字符串中多余的空格和行。

答案 1 :(得分:0)

我不确定您是否可以在纯SQL解决方案中有效地执行此操作。我将使用的一般方法是执行正则表达式搜索以查找非空白字符,后跟2个或更多空格,后跟非空白字符。在你的第三个例子中,结果将是三个正则表达式组...

Group 1 - "SE"
Group 2 - "     "
Group 3 - "RVICE"

这是我认为你需要走出SQL之外的部分。如果您使用了拼写检查API,则可以应用以下逻辑...

如果组1不在字典中,并且组3不在字典中,但组1和3的串联在字典中,则删除空格。继续我们的榜样......

" SE"不在字典里。 "起动转矩"不在字典里。 " SERVICE"在字典中,所以删除之间的空格。

即使这种方法也不完美。如果你举一个例如" OVER FLOW"两者都将在字典中,并且不会删除空格。

本身并不是解决方案,但希望能提供一些有用的食物。

答案 2 :(得分:0)

尝试以下代码:我希望哪些有用:

select replace(replace(replace(replace(replace(replace(text1,'  ','~'),' ','%'),'~~',''),'~%',''),'%',' '),'~',' ') from temp1

请参阅以下链接,我尝试了您的示例: http://sqlfiddle.com/#!2/b51833/1