新足迹

 找回密码
 注册

精华好帖回顾

· SMH 让我们一起来合计合计- 私立学校真是你最好的选择吗? (2012-3-30) patrickzhu · 公立小学的好老师 (2007-9-5) vont
· DIY Ford falcon 换机油油滤变速箱油刹车盘片和Diff油 (2014-4-25) bluesage · 走马观花北海道-美食全部更新完毕。多图杀猫,慎入。 (2012-5-13) teddymu
Advertisement
Advertisement
查看: 1961|回复: 26

sql 问题,等达人,高手,前辈. [复制链接]

头像被屏蔽

禁止访问

发表于 2011-3-10 14:01 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
table [A], column [accountInfo]

table [Account], column [accountNum]

如何取得 table A 里面,凡是[accountInfo]包含 table [Account] 里面 [accountNum] 的数据??

不知道说清了没有??
 
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-3-10 14:02 |显示全部楼层

强调

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
凡是[accountInfo]包含 table [Account] 里面 [accountNum] 的数据,包含,不是等于。

退役斑竹

发表于 2011-3-10 14:07 |显示全部楼层
此文章由 月亮 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 月亮 所有!转贴必须注明作者、出处和本声明,并保持内容完整
看的费劲,accountInfo和accountNumb分别是什么data type?

2007 年度奖章获得者

发表于 2011-3-10 14:10 |显示全部楼层
此文章由 coolioo 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 coolioo 所有!转贴必须注明作者、出处和本声明,并保持内容完整
select * from [A]
join [Account] on CHARINDEX ( [Account].[accountNum], [A].[accountInfo] ) > 0

Assuming both columns are varchar

[ 本帖最后由 coolioo 于 2011-3-10 15:11 编辑 ]

评分

参与人数 3积分 +9 收起 理由
乱码 + 3 你太有才了
kr2000 + 3 你太有才了
bffbffbff + 3 替变形金刚加分

查看全部评分

头像被屏蔽

禁止访问

发表于 2011-3-10 14:14 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 月亮 于 2011-3-10 15:07 发表
看的费劲,accountInfo和accountNumb分别是什么data type?


都是nvarchar. 

比如说
accountNumb 有两行数据 111 和 222

那么accountInfo如果是 ‘my name is 111’ 或者 ‘222 is ur name’就选

参与宝库编辑功臣

发表于 2011-3-10 14:17 |显示全部楼层
此文章由 bffbffbff 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bffbffbff 所有!转贴必须注明作者、出处和本声明,并保持内容完整
select  AccInfo
from tableA
where exists (select 1 from TableAccount where tableA.AccInfo like '%'+TableAccount.AccountNum + '%')

评分

参与人数 1积分 +3 收起 理由
乱码 + 3 你太有才了

查看全部评分

Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-3-10 14:21 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 coolioo 于 2011-3-10 15:10 发表
select * from [A]
join [Account] on CHARINDEX ( [Account].[accountNum], [A].[accountInfo] ) > 0

Assuming both columns are varchar


我错了。coolioo相当正确,很很牛!牛!很牛!很牛!很牛!很牛!很牛!很牛!非常谢谢!

[ 本帖最后由 atransformer 于 2011-3-10 15:28 编辑 ]

参与宝库编辑功臣

发表于 2011-3-10 14:24 |显示全部楼层
此文章由 bffbffbff 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bffbffbff 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果是不完全匹配的join其实速度并不快。
另外到底用join还是subquery/exists速度快还取决于2个表的大小

2007 年度奖章获得者

发表于 2011-3-10 14:28 |显示全部楼层
此文章由 coolioo 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 coolioo 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 bffbffbff 于 2011-3-10 15:24 发表
如果是不完全匹配的join其实速度并不快。
另外到底用join还是subquery/exists速度快还取决于2个表的大小


performance应该是一样的,都是 N x M scan and compare
C.B
头像被屏蔽

禁止访问

发表于 2011-3-10 14:29 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 bffbffbff 于 2011-3-10 15:24 发表
如果是不完全匹配的join其实速度并不快。
另外到底用join还是subquery/exists速度快还取决于2个表的大小


老大,你的语法似乎不对吧?? 

参与宝库编辑功臣

发表于 2011-3-10 14:29 |显示全部楼层

回复 atransformer 10# 帖子

此文章由 bffbffbff 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bffbffbff 所有!转贴必须注明作者、出处和本声明,并保持内容完整
试一下看看
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-3-10 14:30 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 coolioo 于 2011-3-10 15:28 发表


performance应该是一样的,都是 N x M scan and compare


能加分得老大么,能否帮着俺给coolioo加加分。 自从被剥夺了靴子,无能为力了。非常谢谢阿

参与宝库编辑功臣

发表于 2011-3-10 14:33 |显示全部楼层
此文章由 bffbffbff 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bffbffbff 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 coolioo 于 2011-3-10 15:28 发表


performance应该是一样的,都是 N x M scan and compare



确实差不多,只是分析微差,其实这么个搜法,肯定是都不快了

个人感觉如果是2008的话可以做个fulltext index, 然后用contains或者FREETEXT predicate看看会不会更快, 如果table大的话full text search应该更快
永远的junior programmer

参与宝库编辑功臣

发表于 2011-3-10 14:34 |显示全部楼层
此文章由 bffbffbff 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bffbffbff 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 atransformer 于 2011-3-10 15:30 发表


能加分得老大么,能否帮着俺给coolioo加加分。 自从被剥夺了靴子,无能为力了。非常谢谢阿


怎么被剥夺的?
永远的junior programmer

特殊贡献奖章

发表于 2011-3-10 14:35 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这个CHARINDEX不会有0的结果,如果正好是在起始位置找到?

原帖由 coolioo 于 2011-3-10 15:10 发表
select * from [A]
join [Account] on CHARINDEX ( [Account].[accountNum], [A].[accountInfo] ) > 0

Assuming both columns are varchar

2007 年度奖章获得者

发表于 2011-3-10 14:37 |显示全部楼层
此文章由 coolioo 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 coolioo 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-3-10 15:35 发表
这个CHARINDEX不会有0的结果,如果正好是在起始位置找到?



The starting position returned is 1-based, not 0-based.
C.B
Advertisement
Advertisement

参与宝库编辑功臣

发表于 2011-3-10 14:37 |显示全部楼层
此文章由 bffbffbff 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bffbffbff 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-3-10 15:35 发表
这个CHARINDEX不会有0的结果,如果正好是在起始位置找到?



找不到是0,起始位置是1
永远的junior programmer
头像被屏蔽

禁止访问

发表于 2011-3-10 14:38 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 bffbffbff 于 2011-3-10 15:17 发表
select  AccInfo
from tableA
where exists (select 1 from TableAccount where tableA.AccInfo like '%'+TableAccount.AccountNum + '%')


确实也对!!!!!! 牛!!!!!!!!
头像被屏蔽

禁止访问

发表于 2011-3-10 14:41 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 bffbffbff 于 2011-3-10 15:34 发表


怎么被剥夺的?


别问了。 我找个proxy容易么?

评分

参与人数 1积分 +3 收起 理由
IsDonIsGood + 3 兄弟回来啦?

查看全部评分

头像被屏蔽

禁止访问

发表于 2011-3-10 14:42 |显示全部楼层

谢谢 啊,这里好人真多阿,我是老泪纵横啊

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
* kr2000 积分 +3 你太有才了 2011-3-10 15:34
    * bffbffbff 积分 +3 替变形金刚加分 2011-3-10 15:34

特殊贡献奖章

发表于 2011-3-10 14:42 |显示全部楼层

回复 bffbffbff 17# & coolioo 16# 帖子

此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
在.net里找sub string的位置都是1开始吗?还是只是sql server?
Advertisement
Advertisement

参与宝库编辑功臣

发表于 2011-3-10 14:43 |显示全部楼层
此文章由 bffbffbff 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bffbffbff 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 coolioo 于 2011-3-10 15:37 发表


The starting position returned is 1-based, not 0-based.


你的query有个小问题, join的话如果是1对m relation的话结果会重复出现, 所以前面select 还得加个distinct

评分

参与人数 1积分 +1 收起 理由
coolioo + 1 你太有才了

查看全部评分

永远的junior programmer

参与宝库编辑功臣

发表于 2011-3-10 14:44 |显示全部楼层
此文章由 bffbffbff 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bffbffbff 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-3-10 15:42 发表
在.net里找sub string的位置都是1开始吗?还是只是sql server?


不一样。net是0开始

评分

参与人数 1积分 +3 收起 理由
kr2000 + 3 谢谢奉献

查看全部评分

永远的junior programmer

参与宝库编辑功臣

发表于 2011-3-10 14:45 |显示全部楼层
此文章由 bffbffbff 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bffbffbff 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 atransformer 于 2011-3-10 15:41 发表


别问了。 我找个proxy容易么?


o了,低调做人吧兄弟,世间自有真情在
永远的junior programmer
头像被屏蔽

禁止访问

发表于 2011-3-10 14:45 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-3-10 15:42 发表
在.net里找sub string的位置都是1开始吗?还是只是sql server?


C# 从零开始

2007 年度奖章获得者

发表于 2011-3-10 14:46 |显示全部楼层
此文章由 coolioo 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 coolioo 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 bffbffbff 于 2011-3-10 15:43 发表


你的query有个小问题, join的话如果是1对m relation的话结果会重复出现, 所以前面select 还得加个distinct


很正确啊,还是你的query更准确
C.B
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-3-10 14:53 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 coolioo 于 2011-3-10 15:46 发表


很正确啊,还是你的query更准确


精益求精

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部