ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 全文檢索以及一些零散學習

全文檢索以及一些零散學習

原创 Linux操作系统 作者:keeking 时间:2009-08-10 17:20:31 0 删除 编辑

伺服器角色與資料庫角色的差異在與:伺服器角色的對象是伺服器,固定只有7中,不能夠增加.而資料庫角色的對象是資料庫,
除了預設的10種之外,可由管理者自行新增.


DDL:CREATE,ALTER,DROP
DML:INSERT,DELETE,UPDATE
DCL:GRANT,DENY,REVOKE,BEGIN TRAN,COMMIT TRAN,ROLLBACK TRAN

位元運算子
包括&(and),|(or),^(Exclusive OR)

&:當兩個運算元都為1的時候,結果為1.只要有一個不是1,結果為0
|:只要有一個是1,則結果就是1.只有當兩個都是0時,結果才是0
^:只有當兩個值不一樣時,才是1,否則為0


單一運算元運算子
總共有3種:+,-,~(補數)
 print ~1    --"-2"
print ~cast(1 as tinyint) --tinyint將數值轉換成正整數類型,是為了方便示范位元的變灰.若直接用整數,則會產生負數."254"

null值的處理

coalesce(expr1,expr2....)--從左到右計算,遇到非null即傳回

nullif(expr1,expr2)--當expr1等于expr2時,傳回null,否則傳回expr1

isnull(expr1,expr2)--當expr1等于null時,傳回expr2,否則傳回expr1

建立全文檢索目錄
開啟資料庫的全文檢索功能

use test
go

sp_fulltext_database 'enable'
go

1.要建立全文檢索索引,必須有primary key,或是具備唯一性的key才行,而且不得多個欄位組合的key
2.每個資料表只能建立一個全文檢索索引,但全文檢索索引中可包含多個欄位
3.包含在全文搜索欄位中,只能是char,varchar,nvarchar,nchar,text,ntext,image,xml和varbinary等型別的欄位.

select * from dbo.A01 where contains(a0101,'keeking')

Z0001       a0101                a0102                a0103       a0104
----------- -------------------- -------------------- ----------- --------------------
100         keeking                                   100         19851

(1 row(s) affected)

select * from dbo.A01 where contains(a0101,'  keeking     ')---可以包含空格

Z0001       a0101                a0102                a0103       a0104
----------- -------------------- -------------------- ----------- --------------------
100         keeking                                   100         19851

(1 row(s) affected)
select * from dbo.A01 where contains(a0101,'  "keeking"     ')---可以包含空格,須以雙引號括起來

select * from dbo.A01 where contains(a0101,'  "keeking" or "林強"    ')---加上邏輯運算的搜索條件

select * from dbo.A01 where contains(a0101,'  "keeki*"   ')---模糊查詢一定要指明首字元,如"pa*",不可以用"*pa"或"*pa*"

select * from dbo.A01 where contains(a0101,'"keeking" near "drive"') --位置相近的字串

select * from dbo.A01 where contains(a0101,'formsof (inflectional,"drive")') --衍生字
Z0001       a0101                a0102                a0103       a0104
----------- -------------------- -------------------- ----------- --------------------
200         drive                44                   44          44
500         drove                22                   22          22

(2 row(s) affected)

select * from dbo.A01 where contains(a0101 ,'isabout(keeking weight(0.1))')--給字串加權計分

select * from dbo.A01 where freetext(a0101 ,'keeking')--freetext會將句子中的單詞拆分,只要符合單詞的記錄就會搜出來.而不是按句子來.這樣比較不精確

 

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7899089/viewspace-611786/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: ibm
请登录后发表评论 登录
全部评论

注册时间:2009-07-23

  • 博文量
    194
  • 访问量
    287369