<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="http://feeds.qzone.qq.com/rss.xsl" version="1.0"?>
<rss version="2.0" xmlns:qz="http://qzone.qq.com">
<channel>
<title><![CDATA[丟]]></title>
<description><![CDATA[ ]]></description>
<link>http://9674661.qzone.qq.com</link>
<lastBuildDate>Sun, 29 Nov 2009 20:12:27 GMT</lastBuildDate>
<generator>Qzone</generator>
<language>zh-cn</language>
<copyright>Copyright (C), 2005-2008, Tencent Tech. Co., Ltd.</copyright>
<pubDate>Tue, 12 Sep 2006 07:51:34 GMT</pubDate>

<item>
<title><![CDATA[T-SQL中的正则表达式]]></title>
<link>http://9674661.qzone.qq.com/blog/2</link>
<description><![CDATA[原作者：Cory Koski <br>发表时间：2003/06/24 <br> <br> <br>        本文来自Cory Koski。Cory写道：“我最近遇到一个问题，就是试图在数据库域中搜索一个正则表达式。还没有一个版本的SQLServer内部支持正则表达式，但我发现了一个将正则表达式的所有优点添加到你的T_SQL应用的方法。为了更容易的使用正则表达式，我们可以使用自定义函数（User Defined Function, UDF）来帮助我们并使工作简洁。” <br> <br>在这个解决方案中，我们需要SQL Server 2000或更高。我们还需要确定机器中有VBScript.RegExp类库，这随大多数Windows 2000 servers中的Windows Scripting包配有。若你正在使用一个更早版本的Windows，你必须为你的操作系统下载最新版的Windows Scripting。 <br>自定义函数 <br>下面是我的自定义函数，可用来在源字符串中搜索一个正则模式表达式。 <br>CREATE FUNCTION dbo.find_regular_expression <br> ( <br>  @source varchar(5000), <br>  @regexp varchar(1000), <br>  @ignorecase bit = 0 <br> ) <br>RETURNS bit <br>AS <br> BEGIN <br>  DECLARE @hr integer <br>  DECLARE @objRegExp integer <br>  DECLARE @objMatches integer <br>  DECLARE @objMatch integer <br>  DECLARE @count integer <br>  DECLARE @results bit <br>   <br>  EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT <br>  IF @hr &lt;&gt; 0 BEGIN <br>   SET @results = 0 <br>   RETURN @results <br>  END <br>  EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp <br>  IF @hr &lt;&gt; 0 BEGIN <br>   SET @results = 0 <br>   RETURN @results <br>  END <br>  EXEC @hr = sp_OASetProperty @objRegExp, 'Global', false <br>  IF @hr &lt;&gt; 0 BEGIN <br>   SET @results = 0 <br>   RETURN @results <br>  END <br>  EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignorecase <br>  IF @hr &lt;&gt; 0 BEGIN <br>   SET @results = 0 <br>   RETURN @results <br>  END  <br>  EXEC @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source <br>  IF @hr &lt;&gt; 0 BEGIN <br>   SET @results = 0 <br>   RETURN @results <br>  END <br>  EXEC @hr = sp_OADestroy @objRegExp <br>  IF @hr &lt;&gt; 0 BEGIN <br>   SET @results = 0 <br>   RETURN @results <br>  END <br> RETURN @results <br> END <br> <br>将这个UDF保存到你的数据库中，并确定有授权来运行它。当然，你也得确保运行它的人有运行sp_OAxxxxx类扩展存储过程的权限。 <br>这个函数已确保正常运行，并且即便是和COM对象一起使用，也还是挺快的。 <br> <br>举例 <br>使用正则表达式的一个地方就是测试特殊字符。我们不搜索所有的特殊字符，而是查找正常字符的匹配项，例如字母和空格。我们看看它的运行。 <br>DECLARE @intLength AS INTEGER <br>DECLARE @vchRegularExpression AS VARCHAR(50) <br>DECLARE @vchSourceString as VARCHAR(50) <br>DECLARE @vchSourceString2 as VARCHAR(50) <br>DECLARE @bitHasNoSpecialCharacters as BIT <br> <br>-- 初始化变量 <br>SET @vchSourceString = 'Test one This is a test!!' <br>SET @vchSourceString2 = 'Test two This is a test' <br> <br>-- 我们的正则表达式应该类似于 <br>-- [a-zA-Z ]{} <br>-- 如： [a-zA-Z ]{10}  ...  一个十字符的字符串 <br> <br>-- 获得字符串长度 <br>SET @intLength = LEN(@vchSourceString) <br> <br>-- 设置完整的正则表达式 <br>SET @vchRegularExpression = '[a-zA-Z ]{' +  <br>CAST(@intLength as varchar) + '}' <br> <br>-- 是否有任何特殊字符 <br>SET @bitHasNoSpecialCharacters = dbo.find_regular_expression( <br>@vchSourceString, @vchRegularExpression,0) <br> <br>PRINT @vchSourceString <br>IF @bitHasNoSpecialCharacters = 1 BEGIN <br> PRINT 'No special characters.' <br>END ELSE BEGIN <br> PRINT 'Special characters found.' <br>END <br> <br>PRINT '---' <br> <br>-- 获得字符串长度 <br>SET @intLength = LEN(@vchSourceString2) <br> <br>-- 设置完整的正则表达式 <br>SET @vchRegularExpression = '[a-zA-Z ]{' +  <br>CAST(@intLength as varchar) + '}' <br> <br>-- 是否有任何特殊字符 <br>SET @bitHasNoSpecialCharacters = dbo.find_regular_expression( <br>@vchSourceString2, @vchRegularExpression,0) <br> <br>PRINT @vchSourceString2 <br>IF @bitHasNoSpecialCharacters = 1 BEGIN <br> PRINT 'No special characters.' <br>END ELSE BEGIN <br> PRINT 'Special characters found.' <br>END <br> <br>GO <br>The results for thi* **ample would be:  <br>本例的结果应该是： <br>Test one This is a test!! <br>Special characters found. <br>--- <br>Test two This is a test <br>No special characters. <br> <br>结论： <br>正如你所见，这是一个简单技巧，在特定的场合得到了非常有用的结果。你作为一个T_SQL开发人员，可以在正则表达式库VBScript.RegExp中使用和扩展这个技巧。  <br> <br><span style="color:#00A650;line-height:1.8em;"><wbr />要用，就是还看不懂哦</span><wbr /> <!--v:3.2--> ]]></description>
<category><![CDATA[个人日记]]></category>
<author><![CDATA[9674661@qq.com(丟)]]></author>
<comments>http://9674661.qzone.qq.com/blog/2#comment</comments>
<qz:effect>512</qz:effect>
<pubDate>Tue, 12 Sep 2006 07:51:34 GMT</pubDate>
<guid>http://9674661.qzone.qq.com/blog/2</guid>
</item>

<item>
<title><![CDATA[Log Explorer ]]></title>
<link>http://9674661.qzone.qq.com/blog/1</link>
<description><![CDATA[http://www.yiii.net/app/servlet/net.yiii.club.DownloadServlet?Information_Id=I00023471  <br>解压缩密码 www.heibai.net  <br>用解压缩密码解开后，压缩包里也有一个注册机的  <br>打开log explorer file=&gt;attach log file-&gt;选择服务器和登陆方式-&gt;connect-&gt;  <br>选择数据库-&gt;attach-&gt;左面对话框中browse-&gt;view log-&gt;就可以看到log记录了  <br>想恢复的话: 右键log记录 undo transation-&gt;选择保存文件名和路径-&gt;然后打开该文件到查询分析器里执行  <br>T-sql代码就可以了  <br> <br>例如 如果log是delete table where ...的话,生成的文件代码就是insert table ....  <br> <br> <br>遗憾的是，今天这个东西没有用得上，不知道为什么找不到Sql Server 2005的日志记录； <!--v:3.2--> ]]></description>
<category><![CDATA[个人日记]]></category>
<author><![CDATA[9674661@qq.com(丟)]]></author>
<comments>http://9674661.qzone.qq.com/blog/1#comment</comments>
<qz:effect>512</qz:effect>
<pubDate>Thu, 24 Aug 2006 08:16:20 GMT</pubDate>
<guid>http://9674661.qzone.qq.com/blog/1</guid>
</item>

<item>
<title><![CDATA[怪事！！！]]></title>
<link>http://9674661.qzone.qq.com/blog/0</link>
<description><![CDATA[怪事！！！不知道我什么时候居然开通了这个空间! <!--v:3.2--> ]]></description>
<category><![CDATA[个人日记]]></category>
<author><![CDATA[9674661@qq.com(丟)]]></author>
<comments>http://9674661.qzone.qq.com/blog/0#comment</comments>
<qz:effect>512</qz:effect>
<pubDate>Thu, 24 Aug 2006 03:48:03 GMT</pubDate>
<guid>http://9674661.qzone.qq.com/blog/0</guid>
</item>

</channel>
</rss>

