Kirix™ Strata™

Kirix™ Strata™ is an ad hoc data analysis and reporting tool built for people who work with, manipulate and analyze structured data.  Strata is easy to use, has the power you need to work with large files, and helps you get your work done faster:

  • Access data from anywhere (Oracle, SQL Server, CSV, XLS, EBCDIC, HTML, etc.)
  • Freedom from file size limitations (60 billion rows and 18 petabytes per table)
  • Speed, flexibility, and agility (designed for data usability, not data management)

这是一个开发人员想用的工具。当然,此类工具甚多,TOAD, EMS…还有PL Developer。当然了,Kirix Strata与他们都不同。这是一个数据库分析和报告工具。支持广泛的数据库系统,比如Oracle, SQL Server, CSV等。

另外的关键因素是这是一个采用wxWidgets作为开发框架的工具。因此理论支持wxWidgets可以使用的平台。

SQL Server正则表达式函数

这两天有个需求,需要在数据库中判断字符串的格式,于是从网上搜集了一些资料,整理了一下。

下面这个是一个自定义函数,用户可以调用这个函数判断指定的字符串是否符合正则表达式的规则.
CREATE FUNCTION dbo.find_regular_expression
(
@source varchar(5000),   –需要匹配的源字符串
@regexp varchar(1000),  –正则表达式
@ignorecase bit = 0  –是否区分大小写,默认为false
)
RETURNS bit  –返回结果0-false,1-true
AS
BEGIN

–0(成功)或非零数字(失败),是由 OLE 自动化对象返回的 HRESULT 的整数值。
DECLARE @hr integer

–用于保存返回的对象令牌,以便之后对该对象进行操作
DECLARE @objRegExp integer   DECLARE @objMatches integer

–保存结果
DECLARE @results bit

/*
创建 OLE 对象实例,只有 sysadmin 固定服务器角色的成员才能执行 sp_OACreate,并确定机器中有VBScript.RegExp类库
*/
EXEC @hr = sp_OACreate ‘VBScript.RegExp’, @objRegExp OUTPUT
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
/*
以下三个分别是设置新建对象的三个属性。下面是’VBScript.RegExp’中常用的属性举例:
Dim regEx,Match,Matches         ‘建立变量。
Set regEx = New RegExp         ‘建立一般表达式。
regEx.Pattern= patrn         ‘设置模式。
regEx.IgnoreCase = True         ‘设置是否区分大小写。
regEx.Global=True                             ‘设置全局可用性。
set Matches=regEx.Execute(string)             ‘重复匹配集合
RegExpTest = regEx.Execute(strng)      ‘执行搜索。
for each match in matches                    ‘重复匹配集合
RetStr=RetStr &”Match found at position ”
RetStr=RetStr&Match.FirstIndex&”.Match Value is ‘”
RetStr=RetStr&Match.Value&”‘.”&vbCRLF Next
RegExpTest=RetStr

*/
EXEC @hr = sp_OASetProperty @objRegExp, ‘Pattern’, @regexp
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OASetProperty @objRegExp, ‘Global’, false
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
EXEC @hr = sp_OASetProperty @objRegExp, ‘IgnoreCase’, @ignorecase
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
–调用对象方法
EXEC @hr = sp_OAMethod @objRegExp, ‘Test’, @results OUTPUT, @source
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
–释放已创建的 OLE 对象
EXEC @hr = sp_OADestroy @objRegExp
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
RETURN @results
END

下面是一个简单的测试sql语句,可以直接在查询分析器中运行。
DECLARE @intLength AS INTEGER
DECLARE @vchRegularExpression AS VARCHAR(50)
DECLARE @vchSourceString as VARCHAR(50)
DECLARE @vchSourceString2 as VARCHAR(50)
DECLARE @bitHasNoSpecialCharacters as BIT

— 初始化变量
SET @vchSourceString = ‘Test one This is a test!!’
SET @vchSourceString2 = ‘Test two This is a test’

— 我们的正则表达式应该类似于
— [a-zA-Z ]{}
— 如: [a-zA-Z ]{10}  …  一个十字符的字符串

— 获得字符串长度
SET @intLength = LEN(@vchSourceString)

— 设置完整的正则表达式
SET @vchRegularExpression = ‘[a-zA-Z ]{‘ + CAST(@intLength as varchar) + ‘}’

— 是否有任何特殊字符
SET @bitHasNoSpecialCharacters = dbo.find_regular_expression(@vchSourceString, @vchRegularExpression,0)

PRINT @vchSourceString
IF @bitHasNoSpecialCharacters = 1 BEGIN
PRINT ‘No special characters.’
END ELSE BEGIN
PRINT ‘Special characters found.’
END

PRINT ‘**************’

— 获得字符串长度
SET @intLength = LEN(@vchSourceString2)

— 设置完整的正则表达式
SET @vchRegularExpression = ‘[a-zA-Z ]{‘ + CAST(@intLength as varchar) + ‘}’

— 是否有任何特殊字符
SET @bitHasNoSpecialCharacters = dbo.find_regular_expression(@vchSourceString2, @vchRegularExpression,0)

PRINT @vchSourceString2
IF @bitHasNoSpecialCharacters = 1 BEGIN
PRINT ‘No special characters.’
END ELSE BEGIN
PRINT ‘Special characters found.’
END

GO

http://blog.csdn.net/weir55/archive/2008/04/28/2337096.aspx