mysql+多对多+意义_mysql,php 中多对多关系的问题

这篇博客探讨了如何在SQL中处理包含逗号分隔值的字段,通过创建自定义函数模拟split功能,将一行数据拆分为多行。内容涉及到PHP的字符串处理函数与SQL Server的split函数转换,并提供了在MySQL中实现相同功能的方法。文章还讨论了如何在新闻版块表中使用这些技巧进行左关联查询,以获取编辑员的相关信息。
摘要由CSDN通过智能技术生成

展开全部

用你的新闻版块表中的版块id和第一个表的新闻版块id左关联,32313133353236313431303231363533e78988e69d8331333332636432

然后出编辑员相关信息字段就可以了

针对你说的这种情况,你看你是用php中的split()函数(或者是explode()函数,记不太清楚了),来把字段内容拆分,还是想直接在mysql中直接将字段内容拆分开了,反正就是字段内容中的例如1,2,3这样的1行,拆分成3行,

我这有个原来写的sqlserver中的split()函数实现,你可以看下,改成mysql中的就可以了create FUNCTION [dbo].[split](@Long_str varchar(8000),@split_str varchar(100))

RETURNS  @tmp TABLE(

short_str varchar(8000)

)

AS

BEGIN

DECLARE @long_str_Tmp varchar(8000),

@short_str varchar(8000),

@split_str_length int

SET @split_str_length = LEN(@split_str)

IF CHARINDEX(@split_str,@Long_str)=1

SET @long_str_Tmp=SUBSTRING(@Long_str,@split_str_length+1,LEN(@Long_str)-@split_str_length)

ELSE

SET @long_str_Tmp=@Long_str

IF CHARINDEX(REVERSE(@split_str),REVERSE(@long_str_Tmp))>1

SET @long_str_Tmp=@long_str_Tmp+@split_str

ELSE

SET @long_str_Tmp=@long_str_Tmp

WHILE CHARINDEX(@split_str,@long_str_Tmp)>0

BEGIN

SET @short_str=SUBSTRING(@long_str_Tmp,1,

CHARINDEX(@split_str,@long_str_Tmp)-1)

DECLARE @long_str_Tmp_LEN INT,@split_str_Position_END int

SET @long_str_Tmp_LEN = LEN(@long_str_Tmp)

SET @split_str_Position_END = LEN(@short_str)+@split_str_length

SET @long_str_Tmp=REVERSE(SUBSTRING(REVERSE(@long_str_Tmp),1,

@long_str_Tmp_LEN-@split_str_Position_END))

IF @short_str<>'' INSERT INTO @tmp SELECT @short_str

END

RETURN

END

--select * from dbo.split('1/2/3/4/5/6/','/')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值