SUBSTR在MySQL声明中两次;

时间:2012-08-23 09:22:58

标签: mysql character substr trailing

所以我的回答是这种模式......“恭喜!您已经在 * 中赢得了松下音响系统。我们的呼叫中心将在上与您联系 * ** “。我需要的是只选择奖品(在本例中为Panasonic Sound System)作为输出。不同奖品的字符不同。其他人有很多字符,只有10个字符。我需要运行一个select语句,同时删除两个领导“恭喜!您已赢得 ** 中的“和尾随”。我们的呼叫中心将通过 * *** 与您联系。“因此返回奖品;让我们拨打我的表格条目,我的字段中包含此文本,我们称之为响应;我跑了SELECT SUBSTR(response,32) from entries; and I remove the leading characters before the prize.

当我运行时,我会在 * 中获得“松下音响系统”。我们的呼叫中心将通过 * *与您联系** “;

LEADING的字符长度为32,TRAILING为94.奖品不是恒定的。

2 个答案:

答案 0 :(得分:0)

SUBSTRING_INDEX在这里可能很有用:

select 
substring_index(
substring_index(
"Congratulations! You have won a Panasonic Sound System in the *. Our call centre will contact you on ***."," a ",-1)," in the ",1);

答案 1 :(得分:0)

如果您确信您的结尾字符数始终是不变的,那么您可以使用substr's使用案例:SUBSTR(str,pos,len).

len可以通过从原始字符串的长度中减去前导的不需要的字符和尾随不需要的字符来确定。

set @test_string = "Congratulations! You have won a Panasonic Sound System in the ************************. Our call centre will contact you on *************************";
set @leading = 32;
set @trailing = 94;
select substr(@test_string, @leading, length(@test_string) - @leading - @trailing);

例如:

mysql> select substr(@test_string, @trailing_chars, length(@test_string) - @leading_chars - @trailing_chars);
+------------------------------------------------------------------------------------------------+
| substr(@test_string, @trailing_chars, length(@test_string) - @leading_chars - @trailing_chars) |
+------------------------------------------------------------------------------------------------+
|  Panasonic Sound System                                                                        |
+------------------------------------------------------------------------------------------------+