为了账号安全,请及时绑定邮箱和手机立即绑定

纠结的分割截取

纠结的分割截取

海绵宝宝撒 2018-12-07 10:34:15
查看完整描述

18 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

@yling: 下面这样试试呢: select bname,count(1) from (select b.name as bname, a.cid,a.family from b join a where a.family like '%' + b.name + '%') group by bname
查看完整回答
反对 回复 2019-01-21
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

有的 Charindex就是判断字符出现的位置,没有返回0
查看完整回答
反对 回复 2019-01-21
?
交互式爱情

TA贡献1712条经验 获得超3个赞

同意楼上的,呵呵。不过like可能效率不高,找找有没有其他的sql函数,来判断一个字段是否在另一个字段中。我知道在mysql里面,LOCATE的效率比like的高点

查看完整回答
反对 回复 2019-01-21
?
慕容森

TA贡献1853条经验 获得超18个赞

@wang_yb: select b.name as bname, a.cid,a.family from b join a where a.family like '%' + b.name + '%' 这个语句不行啊,我试了,报错,两个表没有关联字段,所以错的,应该是。 后面的where那个条件不得行。
查看完整回答
反对 回复 2019-01-21
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

恩,是可以的,是我的两个关系搞错了我是b表name模糊查询a.famliy字段,所以都为空
查看完整回答
反对 回复 2019-01-21
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

@like%'远远'%: 我在sqlite上运行的可以查出数据啊,sqlite上“+”需要换成“||”
查看完整回答
反对 回复 2019-01-21
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

不是的说错了,select b.name as bname, a.cid,a.family from b join a where a.family like '%' + b.name + '%' 这样是查不出数据来的,感觉like '%' + b.name + '%' 无效
查看完整回答
反对 回复 2019-01-21
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

@like%'远远'%: 您是什么数据库,有的数据库连接字符串的符号不是“+”,是“||”
查看完整回答
反对 回复 2019-01-21
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

like '%' + b.name + '%' 不行的,我这报错
查看完整回答
反对 回复 2019-01-21
?
HUH函数

TA贡献1836条经验 获得超4个赞

能不能再把你的要求表达清楚?

查看完整回答
反对 回复 2019-01-21
?
白板的微信

TA贡献1883条经验 获得超3个赞

这种方式是不行的,要在另一个表取模糊匹配的字段,但是我这么写好像也不对啊 select a.cid,a.family,b.name from a join b on a.family like '%' + b.name + '%'
查看完整回答
反对 回复 2019-01-21
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

select count(*) as 父亲的个数 from a where famliy like '%父亲%'

其他的个数同理

查看完整回答
反对 回复 2019-01-21
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

只需改变a.cid= 多少,就可以根据a表来动态统计b表中的数据
查看完整回答
反对 回复 2019-01-21
?
Qyouu

TA贡献1786条经验 获得超11个赞

已近解决了,lz看下这段代码行吗? select [name],(select COUNT(0) from b where [name]=c.[name]) as 'Count' from (select distinct [name] from a join b on a.famliy like '%'+b.name+'%' where a.cid=2) c
查看完整回答
反对 回复 2019-01-21
?
aluckdog

TA贡献1847条经验 获得超7个赞

如果你能将上面的 from a where cid=1 转换成多行的datatable,那么这句话就能实现你所想要的
查看完整回答
反对 回复 2019-01-21
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

这个问题解决了,那你的问题就解决了 比如a表的cid=1是,你能否将 famliy转换成多行 或者 like 后面加字段名,但是我试过貌似不行, 这是我写的 select a.name,(select count(name) from b where name=a.name) as '统计' from a where cid=1
查看完整回答
反对 回复 2019-01-21
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

建议用C#代码写,sql有的难搞,一下仅提供思路:

1.查询a表的family值,然后分割填充到集合,如:list

2.对list循环,用每个值作为条件去统计B表中的basename

查看完整回答
反对 回复 2019-01-21
?
慕斯709654

TA贡献1840条经验 获得超5个赞

不太明白你说的意思

查看完整回答
反对 回复 2019-01-21
  • 18 回答
  • 0 关注
  • 494 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信