午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    sql server中常用的6個(gè)自定義函數(shù)分享
    來源:易賢網(wǎng) 閱讀:987 次 日期:2015-01-20 10:07:34
    溫馨提示:易賢網(wǎng)小編為您整理了“sql server中常用的6個(gè)自定義函數(shù)分享”,方便廣大網(wǎng)友查閱!

    在日常應(yīng)用中,往往根據(jù)實(shí)際需求錄入一些值,而這些值不能直接使用,所以sql中經(jīng)常會(huì)對(duì)字段值進(jìn)行一些常規(guī)的處理。這里搜集了(提取數(shù)字、英文、中文、過濾重復(fù)字符、分割字符的方法),方便日后查詢使用。

    一、判斷字段值是否有中文

    代碼如下:

    --sql 判斷字段值是否有中文

    create function fun_getcn(@str nvarchar(4000))

    returns nvarchar(4000)

    as

    begin

    declare @word nchar(1),@cn nvarchar(4000)

    set @cn=''

    while len(@str)>0

    begin

    set @word=left(@str,1)

    if unicode(@word) between 19968 and 19968+20901

    set @cn=@cn+@word

    set @str=right(@str,len(@str)-1)

    end

    return @cn

    end

    select dbo.fun_getcn('asdkg論壇kdl')

    --論壇

    select dbo.fun_getcn('asdkg論壇kdl')

    --論壇

    select dbo.fun_getcn('asdkdl')

    --空

    二、提取數(shù)字

    代碼如下:

    if object_id('dbo.get_number2') is not null

    drop function dbo.get_number2

    go

    create function dbo.get_number2(@s varchar(100))

    returns varchar(100)

    as

    begin

    while patindex('%[^0-9]%',@s) > 0

    begin

    set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')

    end

    return @s

    end

    go

    --測試

    print dbo.get_number('呵呵abc123abc')

    go

    --123

    三、提取英文

    代碼如下:

    --提取英文

    if object_id('dbo.get_str') is not null

    drop function dbo.get_str

    go

    create function dbo.get_str(@s varchar(100))

    returns varchar(100)

    as

    begin

    while patindex('%[^a-z]%',@s) > 0

    begin

    set @s=stuff(@s,patindex('%[^a-z]%',@s),1,'')

    end

    return @s

    end

    go

    --測試

    print dbo.get_str('呵呵abc123abc')

    go

    四、提取中文

    代碼如下:

    --提取中文

    if object_id('dbo.china_str') is not null

    drop function dbo.china_str

    go

    create function dbo.china_str(@s nvarchar(100))

    returns varchar(100)

    as

    begin

    while patindex('%[^吖-座]%',@s) > 0

    set @s = stuff(@s,patindex('%[^吖-座]%',@s),1,n'')

    return @s

    end

    go

    print dbo.china_str('呵呵abc123abc')

    go

    五、過濾重復(fù)字段(多種方法)

    代碼如下:

    --過濾重復(fù)字符

    if object_id('dbo.distinct_str') is not null

    drop function dbo.distinct_str

    go

    create function dbo.distinct_str(@s nvarchar(100),@split varchar(50))

    returns varchar(100)

    as

    begin

    if @s is null return(null)

    declare @new varchar(50),@index int,@temp varchar(50)

    if left(@s,1)<>@split

    set @s = @split+@s

    if right(@s,1)<>@split

    set @s = @s+@split

    while charindex(@split,@s)>0 and len(@s)<>1

    begin

    set @index = charindex(@split,@s)

    set @temp = left(@s,charindex(@split,@s,@index+len(@split)))

    if @new is null

    set @new = isnull(@new,'')+@temp

    else

    set @new = isnull(@new,'')+replace(@temp,@split,'')+@split

    while charindex(@temp,@s)>0

    begin

    set @s=stuff(@s,charindex(@temp,@s)+len(@split),charindex(@split,@s,charindex(@temp,@s)+len(@split))-charindex(@temp,@s),'')

    end

    end

    return right(left(@new,len(@new)-1),len(left(@new,len(@new)-1))-1)

    end

    go

    print dbo.distinct_str('a,a,b,c,c,b,c,',',')

    --a,b,c

    go

    --------------------------------------------------------------------

    --過濾重復(fù)字符2

    if object_id('dbo.distinct_str2') is not null

    drop function dbo.distinct_str2

    go

    create function dbo.distinct_str2(@s varchar(8000))

    returns varchar(100)

    as

    begin

    if @s is null return(null)

    declare @new varchar(50),@index int,@temp varchar(50)

    while len(@s)>0

    begin

    set @new=isnull(@new,'')+left(@s,1)

    set @s=replace(@s,left(@s,1),'')

    end

    return @new

    end

    go

    select dbo.distinct_str2('aabccd')

    --abcd

    go

    六、根據(jù)特定字符串分割字段值

    代碼如下:

    if object_id('dbo.split_str') is not null

    drop function dbo.split_str

    go

    create function dbo.split_str(

    @s varchar(8000), --包含多個(gè)數(shù)據(jù)項(xiàng)的字符串

    @index int, --要獲取的數(shù)據(jù)項(xiàng)的位置

    @split varchar(10) --數(shù)據(jù)分隔符

    )

    returns varchar(100)

    as

    begin

    if @s is null return(null)

    declare @splitlen int

    select @splitlen=len(@split+'a')-2

    while @index>1 and charindex(@split,@s+@split)>0

    select @index=@index-1,@s=stuff(@s,1,charindex(@split,@s+@split)+@splitlen,'')

    return(isnull(left(@s,charindex(@split,@s+@split)-1),''))

    end

    go

    print dbo.split_str('aa|bb|cc',2,'|')

    --

    go

    更多信息請(qǐng)查看IT技術(shù)專欄

    更多信息請(qǐng)查看數(shù)據(jù)庫
    易賢網(wǎng)手機(jī)網(wǎng)站地址:sql server中常用的6個(gè)自定義函數(shù)分享
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2025國考·省考課程試聽報(bào)名

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)