首页 新闻 会员 周边

微软面试遇到的sql题目,大家没事可以看看。。

0
悬赏园豆:5 [已解决问题] 解决于 2012-10-08 14:46

面试题1:
表table1只有1列ID
insert into Table1 
select 1
union 
select 2
union
select 3
union
select 4
union
select 5
union
select 6

需要转换为123456789
快速写出有几种写法,我第一感觉是列转换行,仔细一想又更简单的方法:

SQL code
DECLARE@STRVARCHAR(2000) select@STR=ISNULL(@STR+'','')+convert(varchar(10),ID) from (select ID from table1)AS T select@STR



面试题2:
说出下面sql关键字具体用法,举例说明。
 over pivot with Merge output 

这里我只给关键字Merge用法,它在SQL Server 2008被引入
http://www.cnblogs.com/lenxu/archive/2012/02/14/2350922.html

面试题3是关于C#和sql的:
C#中注入攻击,拼接字符串为什么可以注入攻击?而输入sql关键字可以注入工具,普通A,B字段不行,举例说明?SqlParameter和拼接sql语句,哪种更安全,不都是最终给存储过程执行了,说出他们的原理所在

都磊的主页 都磊 | 菜鸟二级 | 园豆:237
提问于:2012-09-24 09:38
< >
分享
最佳答案
0

第一题:使用FOR XML 进行连接 

CREATE TABLE #Table1 ( id INT )
INSERT  INTO #Table1
        SELECT  1
        UNION
        SELECT  2
        UNION
        SELECT  3
        UNION
        SELECT  4
        UNION
        SELECT  5
        UNION
        SELECT  6
SELECT  '' + id + ''
FROM    #Table1 FOR     XML PATH('')
DROP TABLE  #table1



收获园豆:2
acepro | 小虾三级 |园豆:1218 | 2012-09-24 09:47

第二题:请参考MSDN的例子,比如pivot:
http://msdn.microsoft.com/zh-cn/library/ms177410%28v=SQL.90%29.aspx

 

acepro | 园豆:1218 (小虾三级) | 2012-09-24 09:54
其他回答(3)
0

关注第三个问题

收获园豆:1
轻狂の书生 | 园豆:1042 (小虾三级) | 2012-09-24 09:59
0

第三个肯定是参数更安全了,如类型检测,能保证输入的东西只能当参数使用,如注入的恶意脚本只会被解析成字符串的值,等等吧。

收获园豆:1
Ethan轻叹 | 园豆:996 (小虾三级) | 2012-09-24 10:26
0

第三个问题  例如  用户输入的  "1 ' or 1=1 --"

你的语句这样的   sql="delete  from  table where id='"+id+" ' ";把用户输入的数据填到里面

结果是sql="delete  from  table where id='1 ' or 1=1 -- ' ";

这导致的结果就是  你的表里所有数据都删掉了  求改也一样  查询就都会查出来  你可以试试  这就是注入攻击

收获园豆:1
TerryZou | 园豆:203 (菜鸟二级) | 2012-09-24 22:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册