DECLARE @TagNames XML;
SET @TagNames = '<?xml version="1.0" encoding="utf-8"?><ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><string>asp.net</string><string>sql</string><string>ajax</string></ArrayOfString>';
DECLARE @TagNameTable TABLE([IndexId] INT IDENTITY(1,1) NOT NULL PRIMARY KEY, [TagName] NVARCHAR(200) NOT NULL)
INSERT INTO @TagNameTable
SELECT tab.col.value('text()[1]','nvarchar(200)') AS [TagName]
FROM @TagNames.nodes('/ArrayOfString/string') AS tab(col);
select * from @TagNameTable order by [IndexId]
2、使网页中所有链接都另页打开SET @TagNames = '<?xml version="1.0" encoding="utf-8"?><ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><string>asp.net</string><string>sql</string><string>ajax</string></ArrayOfString>';
DECLARE @TagNameTable TABLE([IndexId] INT IDENTITY(1,1) NOT NULL PRIMARY KEY, [TagName] NVARCHAR(200) NOT NULL)
INSERT INTO @TagNameTable
SELECT tab.col.value('text()[1]','nvarchar(200)') AS [TagName]
FROM @TagNames.nodes('/ArrayOfString/string') AS tab(col);
select * from @TagNameTable order by [IndexId]
<head>
<base target="_blank" />
</head>
3、Lambda表达式一例<base target="_blank" />
</head>
static void Main(string[] args)
{
var strs = new List<string> { "A1", "A2", "A3" };
List<string> list = new List<string>();
//使用匿名委托
strs.ForEach(delegate(string str) { Console.WriteLine(str); });
//使用Lambda表达式
strs.ForEach(x => list.Add(x.TrimStart('A')));
list.ForEach(x => Console.WriteLine(x));
Console.ReadLine();
}
4、WCF:ABC 从何地以何种方式绑定何种契约 {
var strs = new List<string> { "A1", "A2", "A3" };
List<string> list = new List<string>();
//使用匿名委托
strs.ForEach(delegate(string str) { Console.WriteLine(str); });
//使用Lambda表达式
strs.ForEach(x => list.Add(x.TrimStart('A')));
list.ForEach(x => Console.WriteLine(x));
Console.ReadLine();
}
5、如何成功调用wsHttpBinding邦定的WCF服务?
服务器定义了dns,如:
<system.serviceModel>
<services>
<service behaviorConfiguration="passportServiceBehavior" name="CJB.Passport.Service.PassportService">
<endpoint address="" binding="wsHttpBinding" contract="CJB.Passport.Contract.IPassportService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="passportServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
客户端也要配置dns,此dns可以为服务器计算机名称,如:<services>
<service behaviorConfiguration="passportServiceBehavior" name="CJB.Passport.Service.PassportService">
<endpoint address="" binding="wsHttpBinding" contract="CJB.Passport.Contract.IPassportService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="passportServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<system.serviceModel>
<client>
<endpoint address="http://passport2.ruiya.com/WcfService/PassportService.svc"
binding="wsHttpBinding" bindingConfiguration="" contract="CJB.Passport.Contract.IPassportService"
name="iisHostEndpoint">
<identity>
<dns value="cjb"/>
</identity>
</endpoint>
</client>
</system.serviceModel>
或者<dns value="localhost"/><client>
<endpoint address="http://passport2.ruiya.com/WcfService/PassportService.svc"
binding="wsHttpBinding" bindingConfiguration="" contract="CJB.Passport.Contract.IPassportService"
name="iisHostEndpoint">
<identity>
<dns value="cjb"/>
</identity>
</endpoint>
</client>
</system.serviceModel>
6、注意between ... and ...在使用变量和使用拼接字符串中不过的执行计划导致的性能问题:
declare @handleTime datetime;
declare @beginTime datetime;
declare @endTime datetime;
set @handleTime = DateAdd(day, -1, getdate());
set @beginTime = CONVERT(datetime, CONVERT(char(10), @handleTime, 120));
set @endTime = DateAdd(day, 1, @beginTime);
declare @sql nvarchar(1000);
set @sql = 'SELECT * FROM [UserPosts] WITH(NOLOCK) WHERE ([AddTime] between ''' +
cast(@beginTime as nvarchar(100)) + ''' AND ''' + cast(@endTime as nvarchar(100)) + ''')';
--print @sql
declare @st datetime
declare @et datetime
set @st = getdate();
exec(@sql);
set @et = getdate();
select datediff(millisecond, @st, @et);
set @st = getdate();
select * from [UserPosts] WITH(NOLOCK) WHERE ([AddTime] between @beginTime and @endTime);
set @et = getdate();
select datediff(millisecond, @st, @et);
拼接字符串: 0msdeclare @beginTime datetime;
declare @endTime datetime;
set @handleTime = DateAdd(day, -1, getdate());
set @beginTime = CONVERT(datetime, CONVERT(char(10), @handleTime, 120));
set @endTime = DateAdd(day, 1, @beginTime);
declare @sql nvarchar(1000);
set @sql = 'SELECT * FROM [UserPosts] WITH(NOLOCK) WHERE ([AddTime] between ''' +
cast(@beginTime as nvarchar(100)) + ''' AND ''' + cast(@endTime as nvarchar(100)) + ''')';
--print @sql
declare @st datetime
declare @et datetime
set @st = getdate();
exec(@sql);
set @et = getdate();
select datediff(millisecond, @st, @et);
set @st = getdate();
select * from [UserPosts] WITH(NOLOCK) WHERE ([AddTime] between @beginTime and @endTime);
set @et = getdate();
select datediff(millisecond, @st, @et);
使用变量:23106ms
7、SQL拆分字符串
CREATE PROCEDURE [dbo].[ec_System_SplitString]
@strs nvarchar(4000),
@separator nchar(1)=','
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tbNames table([Name] nvarchar(256) NOT NULL PRIMARY KEY)
DECLARE @Num int;
DECLARE @Pos int;
DECLARE @NextPos int;
DECLARE @Name nvarchar(256);
SET @Num = 0;
SET @Pos = 1;
WHILE(@Pos <= LEN(@strs))
BEGIN
SELECT @NextPos = CHARINDEX(@separator, @strs, @Pos)
IF (@NextPos = 0 OR @NextPos IS NULL)
SELECT @NextPos = LEN(@strs) + 1
SELECT @Name = RTRIM(LTRIM(SUBSTRING(@strs, @Pos, @NextPos - @Pos)))
SELECT @Pos = @NextPos+1
INSERT INTO @tbNames VALUES (@Name)
SET @Num = @Num + 1
END
SELECT [Name] FROM @tbNames
END
@strs nvarchar(4000),
@separator nchar(1)=','
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tbNames table([Name] nvarchar(256) NOT NULL PRIMARY KEY)
DECLARE @Num int;
DECLARE @Pos int;
DECLARE @NextPos int;
DECLARE @Name nvarchar(256);
SET @Num = 0;
SET @Pos = 1;
WHILE(@Pos <= LEN(@strs))
BEGIN
SELECT @NextPos = CHARINDEX(@separator, @strs, @Pos)
IF (@NextPos = 0 OR @NextPos IS NULL)
SELECT @NextPos = LEN(@strs) + 1
SELECT @Name = RTRIM(LTRIM(SUBSTRING(@strs, @Pos, @NextPos - @Pos)))
SELECT @Pos = @NextPos+1
INSERT INTO @tbNames VALUES (@Name)
SET @Num = @Num + 1
END
SELECT [Name] FROM @tbNames
END