SqlServer教程 第四章(排序規則處理)

2021-06-01 12:30:52 字數 3992 閱讀 2135

一、排序規則應用示例

1--為資料庫指定排序規則

create database db collate chinese_prc_ci_as

goalter database db collate chinese_prc_bin

go2--為表中的列指定排序規則

create table tb(

col1 varchar(10),

col2 varchar(10) collate chinese_prc_ci_as)

goalter table tb add col3 varchar(10) collate chinese_prc_bin

goalter table tb alter column col2 varchar(10) collate chinese_prc_bin

go3-- 為字元變數和引數應用排序規則

declare @a varchar(10),@b varchar(10)

select @a='a',@b='a'

--使用排序規則 chinese_prc_ci_as

select case when @a collate chinese_prc_ci_as = @b then '@a=@b' else '@a<>@b' end

--結果:@a=@b

--使用排序規則 chinese_prc_bin

select case when @a collate chinese_prc_bin = @b then '@a=@b' else '@a<>@b' end

--結果:@a<>@b

二、拼音排序的應用

1--按拼音排序

declare @t table(col varchar(2))

insert @t select '中'

union all select '國'

union all select '人'

select * from @t order by col collate chinese_prc_cs_as_ks_ws

----結果

col 

---- 國人

中-----

go2-- 漢字首字母查詢處理使用者定義函式

create function f_getpy(@str nvarchar(4000))

returns nvarchar(4000)

asbegin

declare @py table(

ch char(1),

hz1 nchar(1) collate chinese_prc_cs_as_ks_ws,

hz2 nchar(1) collate chinese_prc_cs_as_ks_ws)

insert @py select 'a',n'吖',n'鏊'

union  all select 'b',n'八',n'簿'

union  all select 'c',n'嚓',n'錯'

union  all select 'd',n'噠',n'跺'

union  all select 'e',n'屙',n'貳'

union  all select 'f',n'發',n'馥'

union  all select 'g',n'旮',n'過'

union  all select 'h',n'鉿',n'蠖'

union  all select 'j',n'丌',n'竣'

union  all select 'k',n'咔',n'廓'

union  all select 'l',n'垃',n'雒'

union  all select 'm',n'媽',n'穆'

union  all select 'n',n'拿',n'糯'

union  all select 'o',n'噢',n'漚'

union  all select 'p',n'趴',n'曝'

union  all select 'q',n'七',n'群'

union  all select 'r',n'蚺',n'箬'

union  all select 's',n'仨',n'鎖'

union  all select 't',n'他',n'籜'

union  all select 'w',n'哇',n'鋈'

union  all select 'x',n'夕',n'蕈'

union  all select 'y',n'丫',n'蘊'

union  all select 'z',n'匝',n'做'

declare @i int

set @i=patindex('%[吖-做]%' collate chinese_prc_cs_as_ks_ws,@str)

while @i>0

select @str=replace(@str,substring(@str,@i,1),ch)

,@i=patindex('%[吖-做]%' collate chinese_prc_cs_as_ks_ws,@str)

from @py

where substring(@str,@i,1) between hz1 and hz2

return(@str)

endgo

三、全形與半形的處理

1--查詢區分全形與半形字元

--測試資料

declare @t table(col varchar(10))

insert @t select 'aa'

union all select 'aa'

union all select 'aa'   --全形a

union all select 'a,a'  --全形a,半形逗號(,)

union all select 'a,a' --全形a,全形逗號(,)

(1--查大寫字母

select * from @t

where col collate chinese_prc_cs_as_ws like '%a%'

(2--查全形字母

select * from @t

where col collate chinese_prc_cs_as_ws like '%a%'

(3--查半形逗號(,)

select * from @t

where col collate chinese_prc_cs_as_ws like '%,%'

(4--查全形逗號(,)

select * from @t

where col collate chinese_prc_cs_as_ws like '%,%'

go2--實現全形與半形字元轉換的處理函式

create function f_convert(

@str nvarchar(4000), --要轉換的字串

@flag bit              --轉換標誌,0轉換成半形,1轉換成全角

)returns nvarchar(4000)

asbegin

declare @pat nvarchar(8),@step int,@i int,@spc int

if @flag=0

select @pat=n'%[!-~]%',@step=-65248,

@str=replace(@str,n' ',n' ')

else

select @pat=n'%[!-~]%',@step=65248,

@str=replace(@str,n' ',n' ')

set @i=patindex(@pat collate latin1_general_bin,@str)

while @i>0

select @str=replace(@str,

substring(@str,@i,1),

nchar(unicode(substring(@str,@i,1))+@step))

,@i=patindex(@pat collate latin1_general_bin,@str)

return(@str)

endgo

第四章 繼承

一 為什麼要繼承 在物件導向中我們將具有很多重複內容的類中的內容提取出來,寫成乙個單獨的類 其他類只需要繼承就能取得這些功能,同時可以在自己類中寫入獨特的自定義方法 二 繼承語法 inte ce circle nsobject 繼承是在介面中定義的 冒號後的類名是要整合的類,nsobject 是co...

第四章 物件

三個特性 身份 型別 值 每個物件都有唯一的身份來標識自己,使用內建函式id 得到。例子 usr bin env python coding utf 8 a 32 print a b a print id a id b 結果 d python27 python.exe e workp python ...

第四章 其他

sizeof和strlen 區別sizeof以位元組為單位給出資料的大小,strlen 函式以字元為單位給出字串的長度。使用strlen 函式要加 include標頭檔案。sizeof計算字元時會將標誌字串結束的不可見的空字元計算在內。定義符號常量 方法一 define name value 優點 ...