Mysql匹配一个或多个空格

时间:2013-06-03 21:05:42

标签: mysql substring

我有一个名为“匹配”的字符串列,其数据如下:

054T,Arequipa,Peru

我正在使用查询来提取子字符串,例如提取第一个出现的术语:

SUBSTRING_INDEX(matches, ',', 1)

成功返回054T。现在的问题是我有一个由一个或多个空格分隔的数据:

054T     Arequipa    Peru

SUBSTRING_INDEX(matches, ' ', 1)

不会返回054T,对于一个或多个空格会是什么样的正则表达式?

由于

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

SELECT LEFT(matches, LOCATE(' ', matches) - 1);

LOCATE返回第一个空白符号的索引(从1开始),使用LEFT,您只需从字符串的左侧获取该符号数。

当这个片段中没有空格时,这个片段会自动返回值:

SELECT IF(
  LOCATE(' ', matches) != 0, 
  LEFT(matches, LOCATE(' ', matches) - 1), 
  matches
);

如果你正如你所提到的那样,可以有空格和制表符,那么只需相应地准备字符串:

SELECT LEFT(matches, LOCATE(' ', REPLACE(matches, '\t', ' ')) - 1);

我仍然想知道,你不能正常化它:

UPDATE your_table SET matches = REPLACE(matches, '\t', REPEAT(' ', 4));

...或者,或许更好,只需将其移动到另一个表中(因为它实际上看起来像是伪装的一套)。