0

所以我的回答是这样的......“恭喜!您在*赢得了松下音响系统。我们的呼叫中心将在* **与您联系." 我需要的是仅选择奖品(在本例中为 Panasonic Sound System" )作为输出。不同奖品的人物不同。其他的有很多字符,只有 10 个字符。我需要运行一个选择语句,删除前面的“Congratulations! You have won a”和后面的“**。我们的呼叫中心将在* ***上与您联系。”并因此返回奖品;让我们调用我的表格条目,我的字段包含此文本,我们称之为响应;我已经运行 SELECT SUBSTR(response,32) from entries; and I remove the leading characters before the prize.

当我运行它时,我得到“Panasonic Sound System in the *。我们的呼叫中心将在* ***与您联系。”;

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

4

2 回答 2

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);
于 2012-08-23T09:32:43.693 回答
0

如果您确信您的尾随和前导字符数始终保持不变,您可以使用substr 的用例: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                                                                        |
+------------------------------------------------------------------------------------------------+
于 2012-08-23T09:53:51.973 回答