Прочтите документацию для SUBSTRING_INDEX
и REPLACE
, и вам будет понятнее, что код пытается сделать.
Обратите внимание, что SUBSTRING_INDEX(address,';',10)
извлекает все address
вплоть до 10-го вхождения ;
, поэтому в вашем случае от начала строки до s:4:"2011"
.
REPLACE(string,from,to)
заменяет все вхождения from
с to
.Похоже, что код, который вы пробовали, пытается заменить все до 9-го ';'ни с чем (через REPLACE
), а также отрезать все после 10 ';'.Это оставило бы «: 4:« 2011 »».
Один из способов извлечь s:4:"2011"
- это использовать SUBSTRING_INDEX(address,';',-4)
, который возвращает все с 4-го по ;
и далее.В вашем случае это будет s:4:"2011";s:7:"country";s:9:"Australia";}
.
Затем используйте SUBSTRING_INDEX(...,';',1)
в этой результирующей строке, чтобы получить все до 1-го вхождения ;
, равного s:4:"2011"
.
В итоге:
SUBSTRING_INDEX(SUBSTRING_INDEX(address,';',-4),';',1)
Я уверен, что есть и другие способы сделать это.