微软面试遇到的sql题目,高手看看有几种写法
面试题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 @STR VARCHAR(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语句,哪种更安全,不都是最终给存储过程执行了,说出他们的原理所在?
------解决方案--------------------第一个问题常见的方式有四种:
参考:
http://blog.csdn.net/maco_wang/article/details/6370666
------解决方案--------------------第一题,为这种效率会好些。
SELECT REPLACE((SELECT @STR=ISNULL(@STR+'','')+RTRIM(ID) FROM Table1
FOR XML PATH('')),',','')
第二题,百度下就行了。
第三题 SqlParameter 是由C#机制进行防注入检索,这这种机制对于动态SQL的检索并不到位,容易产生关键字注入!