Mysql substring_index 用法

  • A+
所属分类:编程相关 网站建设

在数据库里面,我们经常会遇到截取某段字符来取值,所以我们可以尝试substring_index,不多讲,只看下面的例子就知道了。
例1

select substring_index('blog.faystar.com','.',1)

#结果显示blog

例2

select substring_index('blog.faystar.com','.',2)

#结果显示blog.faystar

例3

select substring_index('blog.faystar.com','.',-1)

#结果显示com

例4

select substring_index('blog.faystar.com','.',-2)

#结果显示faystar.com

上面的几个例子中,搜索“.”来取值,正数为向右查找关键字出现的次数后取值,负值则是向左取值。

知道了原理,我们来一个复杂点的。

某table的一个address值如下:

a:7:{s:2:"id";s:2:"21";s:8:"realname";s:9:"刘小小";s:6:"mobile";s:11:"138000000";s:7:"address";s:41:"春园路一号一单元";s:8:"province";s:9:"辽宁省";s:4:"city";s:9:"大连市";s:4:"area";s:12:"甘井子区";}

可以看到上面的值是一个序列化存储的值,我们要想办法把里面的值查询出来。

SELECT
	SUBSTRING_INDEX(
		SUBSTRING_INDEX(o.address, '";s:6:"mobile"', 1),'"',-1) AS 收货人,
	SUBSTRING_INDEX(
		SUBSTRING_INDEX(o.address, 'mobile";s:11:"', -1),'";s:7:"address"',1) AS 收货电话,
  concat(
		SUBSTRING_INDEX(
			SUBSTRING_INDEX(o.address, '";s:4:"city"', 1),'"',-1),
		SUBSTRING_INDEX(
			SUBSTRING_INDEX(o.address, '";s:4:"area"', 1),'"',-1),
		SUBSTRING_INDEX(	
			SUBSTRING_INDEX(o.address, '";}',1), '"', -1),
		SUBSTRING_INDEX(
			SUBSTRING_INDEX(o.address, '";s:8:"province"', 1),'"',-1)
	)AS 收货地址
FROM shop_orders AS o

得到的结果如下:

刘小小 138000000 辽宁省大连市甘井子区春园路一号一单元

上面使用了嵌套,看起来是不是很简单,那就试试吧。

  • 我的微信
  • 扫一扫加我好友
  • weinxin
  • 微信公众号
  • 谈点儿别的
  • weinxin
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: