首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

微软口试遇到的sql题目,高手看看有几种写法

2012-10-11 
微软面试遇到的sql题目,高手看看有几种写法面试题1:表table1只有1列IDinsert into Table1select 1unionsel

微软面试遇到的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 Tselect @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的检索并不到位,容易产生关键字注入!

热点排行