check xx in(電子設(shè)備,機(jī)械設(shè)備,........)
創(chuàng)新互聯(lián)長(zhǎng)期為超過(guò)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為托克遜企業(yè)提供專(zhuān)業(yè)的網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),托克遜網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
其中xx為屬性名
check(dtime=now())
其中當(dāng)前時(shí)間用now()函數(shù)獲得,這是sqlserver中的獲得系統(tǒng)時(shí)間的函數(shù)。不能晚于當(dāng)前時(shí)間,也就是要比當(dāng)前時(shí)間要小,dtime為屬性名。
1、CONVERT()
函數(shù)
?
1
CONVERT(data_type(length),data_to_be_converted,style)
data_type(length)
規(guī)定目標(biāo)數(shù)據(jù)類(lèi)型(帶有可選的長(zhǎng)度)。data_to_be_converted
含有需要轉(zhuǎn)換的值。style
規(guī)定日期/時(shí)間的輸出格式。
可以使用的
style
值:點(diǎn)擊打開(kāi)鏈接
2、DATEADD()
函數(shù)
點(diǎn)擊打開(kāi)鏈接
3、CAST()
函數(shù)
?
1
2
Syntax
for
CAST:
CAST
(
expression
AS
data_type
[
(
length
)
]
)
expression
任何有效的表達(dá)式。
data_type
目標(biāo)數(shù)據(jù)類(lèi)型。
這包括
xml、bigint
和
sql_variant。
不能使用別名數(shù)據(jù)類(lèi)型。
length
指定目標(biāo)數(shù)據(jù)類(lèi)型長(zhǎng)度的可選整數(shù)。
默認(rèn)值為
30。
CONVERT()
函數(shù)與CAST()
函數(shù)詳細(xì)信息:點(diǎn)擊打開(kāi)鏈接
sqlserver中,主要有regexp_like,regexp_replace,regexp_substr,regexp_instr四個(gè)正則表達(dá)式函數(shù)。
1、regexp_like:
regexp_like(x,pattern[,match_option]),查看x是否與pattern相匹配,該函數(shù)還可以提供一個(gè)可選的參數(shù)match_option字符串說(shuō)明默認(rèn)的匹配選項(xiàng)。match_option的取值如下:
'c'
說(shuō)明在進(jìn)行匹配時(shí)區(qū)分大小寫(xiě)(缺省值);
'i'
說(shuō)明在進(jìn)行匹配時(shí)不區(qū)分大小寫(xiě);
'n'
(.)點(diǎn)號(hào)能表示所有單個(gè)字符,包括換行(俺還不知道什么地方有用到換行.只知道sql里面可以用chr(10)表示換行、
'm'
字符串存在換行的時(shí)候當(dāng)作多行處理.這樣$就可匹配每行的結(jié)尾.不然的話$只匹配字符串最后的位置、
示例:
select
*
from
emp
where
regexp_like(ename,'^a[a-z]*n$');
可以查找ename中以a開(kāi)頭以n結(jié)尾的行.例如ename為arwen或arwin或anden.但Arwen不能被匹配.因?yàn)槟J(rèn)是區(qū)分大小寫(xiě).如果是
select
*
from
emp
where
regexp_like(ename,'^a[a-z]*n$','i')
則可以查找ename為Arwen的行記錄。
2、regexp_instr:
REGEXP_INSTR(x,pattern[,start[,occurrence[,return_option[,
match_option]]]])用于在x中查找pattern。返回pattern在x中出現(xiàn)的位置。匹配位置從1開(kāi)始。可以參考字符串函數(shù)
INSTR(),參數(shù)相關(guān):
'start'
開(kāi)始查找的位置;
'occurrence'
說(shuō)明應(yīng)該返回第幾次出現(xiàn)pattern的位置;
'return_option'
說(shuō)明應(yīng)該返回什么整數(shù)。若該參數(shù)為0,則說(shuō)明要返回的整數(shù)是x中的一個(gè)字符的位置;若該參數(shù)為非0的整數(shù),則說(shuō)明要返回的整數(shù)為x中出現(xiàn)在pattern之后
的字符的位置;
'match_option'
修改默認(rèn)的匹配設(shè)置.與regexp_like里面的相同.
示例:
DECLARE
V_RESULT
INTEGER
;
BEGIN
SELECT
REGEXP_INSTR('hello
world','o',1,1,0)
INTO
V_RESULT
FROM
DUAL;
DBMS_OUTPUT.PUT_LINE(V_RESULT);
END;
結(jié)果為5,即字母o第一個(gè)次出現(xiàn)的位置。
如果regexp_instr('hello
world','o',1,1,n)其中n為除0之外的整數(shù)。比如1,3。則結(jié)果為6.表示第一次出現(xiàn)字母o的后面一個(gè)字符的位置。
如果regexp_instr('hello
world','o',1,2,0)則結(jié)果為9.表示第二次出現(xiàn)字母o的位置.
3、regexp_replace:
REGEXP_REPLACE(x,pattern[,replace_string[,start[,occurrence[,
match_option]]]])用于在x中查找pattern,并將其替換為replae_string。可以參考字符串函數(shù)
REPLACE(),參數(shù)同REGEXP_INSTR函數(shù)
示例:
DECLARE
V_RESULT
varchar2(90);
BEGIN
SELECT
REGEXP_REPLACE('hello
world','o','x',1,1)
INTO
V_RESULT
FROM
DUAL;
DBMS_OUTPUT.PUT_LINE(V_RESULT);
END;
結(jié)果為hellx
world.
如果REGEXP_REPLACE('hello
world','o','x'),則結(jié)果為hellx
wxrld.
如果
REGEXP_REPLACE('hello
world','o','x',1,2)則結(jié)果為hello
wxrld.
4、regexp_substr:
REGEXP_SUBSTR(x,pattern[,start[,occurrence[,
match_option]]])用于在x中查找pattern并返回。可以參考字符串函數(shù)
SUBSTR(),參數(shù)同REGEXP_INSTR函數(shù).
例如:
DECLARE
V_RESULT
VARCHAR2(255);
BEGIN
SELECT
REGEXP_SUBSTR('hello
world','l{2}')
INTO
V_RESULT
FROM
DUAL;
DBMS_OUTPUT.PUT_LINE(V_RESULT);
END
;
結(jié)果為ll
查詢到匹配的字符串才返回匹配的字符.沒(méi)查到就返回空。
使用vbscript 或者是frameword程序集向SqlServer數(shù)據(jù)庫(kù)中添加一個(gè)正則表達(dá)式函數(shù),就可以滿足你的需求了嘛。
vbscript 函數(shù)(需要SqlServer運(yùn)行環(huán)境中vbscript 庫(kù))
CREATE function [dbo].[RegexMatchFirst]
(
@source ntext, --原字符串
@regexp varchar(1000), --正則表達(dá)式
@global bit = 1, --是否是全局替換
@ignoreCase bit = 0 --是否忽略大小寫(xiě)
)
returnS varchar(1000) AS
begin
declare @hr integer
declare @objRegExp integer
declare @objMatch INT
declare @matchcount INT
declare @command varchar(50)
declare @result varchar(5000)
exec @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
IF @hr 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
IF @hr 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'Global', @global
IF @hr 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignoreCase
IF @hr 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OAMethod @objRegExp, 'execute', @objmatch OUTPUT, @source
IF @hr 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
EXEC @hr= sp_OAGetProperty @objmatch, 'count', @matchcount OUT
IF @hr 0 or @objmatch = 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
set @command = 'item(0).Value'
EXEC @hr= sp_OAGetProperty @objmatch, @command, @result OUT
exec @hr = sp_OADestroy @objRegExp
IF @hr 0 begin
return null
end
return @result
end
framework運(yùn)行時(shí)程序集:
打開(kāi) Microsoft Visual Studio,創(chuàng)建一個(gè)sqlserver 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)項(xiàng)目,在項(xiàng)目中按照SqlServer方式創(chuàng)建一個(gè)正則表達(dá)式匹配函數(shù),然后編譯部署到你的SqlServer數(shù)據(jù)庫(kù)中。
這個(gè)時(shí)候刷新數(shù)據(jù)庫(kù)的可編程性--函數(shù) -- 標(biāo)量值函數(shù)就會(huì)看到你在Microsoft Visual Studio中創(chuàng)建的自定義函數(shù)了。
Sql server不支持正則,如果是Sql2005以上的版本,可以用Dotnet的托管代碼來(lái)實(shí)現(xiàn),參考:
文章題目:sqlserver表達(dá)式,SQL查詢表達(dá)式
本文網(wǎng)址:http://m.rwnh.cn/article8/dsdjiop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、App設(shè)計(jì)、云服務(wù)器、網(wǎng)站收錄、App開(kāi)發(fā)、小程序開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)