美文网首页
菜鸟sql的日常(一)

菜鸟sql的日常(一)

作者: 熊猫爱吃竹 | 来源:发表于2016-11-09 18:40 被阅读0次

小菜鸟一只,大神勿喷。【乖巧】

两张表

   aaa表

    bbb表

bbb 表的modelid  是 aaa表的id值   字符串类型  组成 1,2这样的形式 并且不固定  也可能是1,2,3,4这种

需要得到的效果

将aaa表的name字段根据 bbb 表 的madelid字段中 id  的顺序显示到一个字段


 用了sql中的STUFF函数

这个函数可以用来删除 或者是修改某段字符中的某几个字

第一次的代码如下:

select *,STUFF(modelid,1,len(modelid), ( select top 1 (select  name+','  from aaa where id in (1,2) for xml path('') ) as hh from aaa t2  where id in (1,2)) ) as a  from bbb

这句代码可以实现效果 但是美中不足的是  数据为写死的值  这样就导致了代码很不灵活 

你会说  in中用 modelid代替好了  实验证明 这是行不通的  报错

 

 那么这到底是作什么妖呢  

原因是modleid值是varchar值  id是int值   正确的写法应该是 where id in(1,2,3)

而现在会变成 where id in(‘1,2,3’)

现在的问题是来解决将字符串类型改为int类型  圆满这次的sql语句 

一般普通的 如果是只有一个值的情况下  可以直接转成int类型的值 但是这里是多个值  明显行不通 经过百度  找到一个方法  sql语句如下:

  GO

CREATE FUNCTION fn_StringSplitTable

(

@str NVARCHAR(MAX),

@split NVARCHAR(10)

)

RETURNS TABLE

    AS

RETURN

(

SELECT B.id

FROM

(

SELECT [value] = CONVERT(XML , '<v>' + REPLACE(@str , @split , '</v><v>') + '</v>')

) A

OUTER APPLY

(

SELECT id = N.v.value('.' , 'nvarchar(100)')

FROM A.[value].nodes('/v') N ( v )

) B

)

Go

select *,STUFF(modelid,1,len(modelid), ( select top 1 (select  name+','  from aaa where id in (SELECT CAST(id AS INT) FROM dbo.fn_StringSplitTable(modelid, ','))  for xml path('') ) as hh from aaa t2  where id in (SELECT CAST(id AS INT) FROM dbo.fn_StringSplitTable(modelid, ','))) ) as a  from bbb ;

 

注意 这一定要带上go 形成代码块 

最后 问题圆满解决 

需要注意的是:这里还用了个知识点  把表格多行值  放到了一个字段中

 

select  id,(select  name+','  from aaa where id in (1,2) for xml path('') ) as hh from aaa t2  where id in (1,2)

 

介于条件问题  会生成多行一样的语句  暂时没想到办法 我的解决方案是  只取了第一条

End

相关文章

  • 菜鸟sql的日常(一)

    小菜鸟一只,大神勿喷。【乖巧】 两张表 aaa表 bbb表 bbb 表的modelid 是 aaa表的id值 ...

  • MySQL学习计划

    1.基础概念(1)菜鸟教程https://www.runoob.com/sql/sql-tutorial.html...

  • 【摄影】日常

    来自一个菜鸟的日常

  • 【摄影】日常

    来自一个菜鸟的日常

  • SQL回顾总结

    整理自菜鸟教程 什么是SQL SQL 指结构化查询语言,全称是 Structured Query Language...

  • 记sql学习过程(第一章)

    我知道,对于sql方面,我就是一个菜鸟中的菜鸟,但我还是想尝试一下,看自己能学到哪种程度?看自己能否坚持下来。 下...

  • 菜鸟运营的日常

    计划计划计划!

  • Mongodb基本概念(对比RDBMS)

    在菜鸟教程上面快速浏览了一下. |SQL术语/概念 | MongoDB术语/概念| 解释/说明||-|-||d...

  • MySQL

    MySQL安装 登陆mysql 创建一个database,并命名haha 调用haha,并将.sql文件(从菜鸟教...

  • mysql数据库文章

    MySQL指南之SQL语句基础sql语法--菜鸟教程 mysql数据库中字符串格式的13位时间戳转换为日期格式 S...

网友评论

      本文标题:菜鸟sql的日常(一)

      本文链接:https://www.haomeiwen.com/subject/blrtpttx.html