我有这个字段:
Pb de HSPA Rab setup sur SFX4149F11 depuis 18/11
我的目标是在'sur'之后取三个字符。 我试过这个功能。但结果却显得空洞。
delimiter |
CREATE FUNCTION METTRE(s VARCHAR(2000)) RETURNS varchar(2000)
DETERMINISTIC
BEGIN
DECLARE open INT;
DECLARE close INT;
DECLARE someLimit INT;
DECLARE str VARCHAR(2000);
DECLARE toFind VARCHAR(2000);
DECLARE nom VARCHAR(20000);
SET open = 1;
SET close = 1;
SET toFind = s ;
SET someLimit = 100;
SET str ='';
WHILE close > 0 and open > 0 and someLimit > 0 DO
SET someLimit = someLimit -1;
SET open = locate('sur',toFind);
IF open > 0 THEN
SET toFind = SUBSTRING(toFind,open);
SET close = locate(4,toFind);
IF close > 2 THEN
SET nom=SUBSTRING(toFind,2,close-2);
SET toFind = SUBSTRING(toFind,close);
END IF;
END IF;
END WHILE;
return SUBSTRING(str,2);
END |
delimiter;
感谢。
答案 0 :(得分:0)
如果你总是在sur
之后寻找3个字符,如果之后有空格,那么可以更轻松地完成
mysql>
select
substring(
trim(
substring_index(
'Pb de HSPA Rab setup sur SFX4149F11 depuis 18/11','sur ',-1
)
),
1,3) as n;
+-----+
| n |
+-----+
| SFX |
+-----+
在上面,只需用表
中的column_name替换硬编码数据select
substring(
trim(
substring_index(
yor_col_name,'sur ',-1
)
),
1,3) as n
从评论看起来你正在尝试更新同一个表中的其他一些列,所以这里有一个如何做到这一点的例子
mysql> select * from test ;
+--------------------------------------------------+-------------+
| val | Affected_CI |
+--------------------------------------------------+-------------+
| Pb de HSPA Rab setup sur SFX4149F11 depuis 18/11 | NULL |
| Pb de HSPA Rab setup sur LJK4149F11 depuis 18/11 | NULL |
| Pb de HSPA Rab setup sur MSP4149F11 depuis 18/11 | NULL |
+--------------------------------------------------+-------------+
mysql> update test set Affected_CI = substring(trim(substring_index(val,'sur ',-1)),1,3) ;
Query OK, 2 rows affected (0.04 sec)
Rows matched: 3 Changed: 2 Warnings: 0
mysql> select * from test ;
+--------------------------------------------------+-------------+
| val | Affected_CI |
+--------------------------------------------------+-------------+
| Pb de HSPA Rab setup sur SFX4149F11 depuis 18/11 | SFX |
| Pb de HSPA Rab setup sur LJK4149F11 depuis 18/11 | LJK |
| Pb de HSPA Rab setup sur MSP4149F11 depuis 18/11 | MSP |
+--------------------------------------------------+-------------+