国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server 2000 中使用正則表達式

2024-08-31 00:47:02
字體:
來源:轉載
供稿:網友

這兩天有個需求,需要在數據庫中判斷字符串的格式,于是從網上搜集了一些資料,整理了一下。

下面這個是一個自定義函數,用戶可以調用這個函數判斷指定的字符串是否符合正則表達式的規則.
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

來源:lizhiwen的VeVb

上一篇:一個獲取SQL Server數據字典的經典SQL語句

下一篇:解析 SQL Server 2008 的精妙之處

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 舒兰市| 田阳县| 东乌珠穆沁旗| 买车| 利川市| 古丈县| 金乡县| 昭平县| 舞阳县| 隆德县| 彰化市| 台东市| 泰来县| 湟中县| 墨江| 宝坻区| 五莲县| 吉水县| 楚雄市| 田东县| 卫辉市| 漠河县| 门源| 绥江县| 大港区| 兴宁市| 敖汉旗| 乌恰县| 乡城县| 义乌市| 湖北省| 临汾市| 安阳县| 城口县| 周口市| 滦南县| 龙口市| 安宁市| 江安县| 台东市| 奎屯市|