您需要使用CHARINDEX和SubString(Microsoft SQL)或
這是示例代碼中,我爲我的微軟SQL服務器進行:
declare @companyIdString varchar(50) = 'a:1:{i:0;s:7:"CO_2012";}'
print 'Company ID in a string: ' + @companyIdString
print 'Find first position: ' + Cast(charindex('"CO_', @companyIdString) as varchar(2))
print 'Locate the second position (the last "): ' + Cast(charindex('"', @companyIdString, charindex('"CO_', @companyIdString)+4) as varchar(2))
print 'Extracted Company Id: ' + substring(@companyIdString,charindex('"CO_', @companyIdString)+4, charindex('"', @companyIdString, charindex('"CO_', @companyIdString)+4) - charindex('"CO_', @companyIdString) - 4)
select
@companyIdString as CompanyIdString,
substring(@companyIdString,charindex('"CO_', @companyIdString)+4, charindex('"', @companyIdString, charindex('"CO_', @companyIdString)+4) - charindex('"CO_', @companyIdString) - 4) as CompanyId
我也做了一個MySQL服務器相同的代碼:
set @companyIdString := 'a:1:{i:0;s:7:"CO_2012";}';
select
@companyIdString as CompanyIdString,
substring_index(substring_index(substring_index(@companyIdString, '"', 2), '"', -1), '_', -1) as CompanyId
的SUBSTRING_INDEX通過定位第二個開始「(串現在是a:1:{i:0; s:7:「CO_2012),然後使用-1向後搜索以找到第一個」(字符串現在是CO_2012)。然後向後搜索下劃線(字符串現在是2012)。
MySQL不知道什麼是PHP序列化。 – 2014-11-04 09:29:08
因此,您不能在SQL語句中的CO_之後提取該數字嗎?忽略PHP部分,因爲那在sql語句之後給了我答案。我需要它在SQL語句中。認爲這是可能的。 – andy 2014-11-04 09:30:17