【发布时间】:2011-09-20 07:09:11
【问题描述】:
在我的数据库的一个表中,我的字符串看起来像这样:
sometext-othertext
如何使用 SELECT 语句删除包含破折号的文本,以便结果为 sometext?
【问题讨论】:
标签: mysql
在我的数据库的一个表中,我的字符串看起来像这样:
sometext-othertext
如何使用 SELECT 语句删除包含破折号的文本,以便结果为 sometext?
【问题讨论】:
标签: mysql
返回第一次出现分隔符“-”之前的子字符串:
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
【讨论】:
有两种方法可以解决这个问题,如果你想显示所有(只删除“-”符号,我建议使用这个,因为速度更快:
SELECT REPLACE('sometext-othertext','-','');
该语法将文本“-”更改为“”(空文本,因为您只想删除它)
如果您只想显示第一部分(例如:sometext)或仅显示第二部分(例如:othertext),您可以使用它来分割字符串:
SELECT SUBSTRING_INDEX('sometext-othertext', '-', 1);
【讨论】:
只需使用:
SELECT SUBSTRING_INDEX('sometext-othertext', '-', 1);
函数有3个参数,第一个是文本,第二个是分割对象,数字(1)是你想要的(控制器)
【讨论】:
SELECT REPLACE("sometext-othertext","-", "") as newvalue
应该这样做。
编辑:
SELECT SUBSTRING_INDEX('sometext-othertext', '-', 1) as newvalue;
很抱歉没有早点理解这个问题。
【讨论】:
sometextothertext 而 OP 想要 sometext。
最好使用mysql REPLACE函数将“-”替换为“”
【讨论】: