如何删除mysql中的部分字符串?

jin*_*ngo 14 mysql

在我的数据库的一个表中,我有一些看起来像这样的字符串:

sometext-othertext
Run Code Online (Sandbox Code Playgroud)

如何删除包含带有SELECT语句的文本的文本,所以结果只是sometext

Blu*_*ind 25

在第一次出现分隔符" - "之前返回子字符串:

SELECT SUBSTRING_INDEX('foo-bar-bar', '-', 1) as result;

输出结果="foo"

在获取子字符串之前,您可以将1替换为所需的出现次数

SELECT SUBSTRING_INDEX('foo-bar-bar', '-', 2) as result;

输出结果="foo-bar"

参考:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring-index

  • 参考 - http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring-index (2认同)

zar*_*run 9

SELECT REPLACE("sometext-othertext"," - ","")作为newvalue

这应该做到这一点.
编辑:

  SELECT SUBSTRING_INDEX('sometext-othertext', '-', 1) as newvalue;
Run Code Online (Sandbox Code Playgroud)

对于之前不理解这个问题表示歉意.

  • 不,这会产生`sometextothertext`而OP想要'sometext`. (2认同)

Abd*_*yir 5

有两种方法可以解决此问题,如果您想显示全部(仅删除“-”符号,我建议使用此方法,因为速度更快:

SELECT REPLACE('sometext-othertext','-','');
Run Code Online (Sandbox Code Playgroud)

该语法将文本“-”更改为“”(空文本,因为您只想删除它)

如果您只想显示第一部分(例如:sometext)或仅显示第二部分(例如:othertext),您可以使用它来分割字符串:

SELECT SUBSTRING_INDEX('sometext-othertext', '-', 1);
Run Code Online (Sandbox Code Playgroud)