sql語句中偽列用於where從句

時間 2021-06-03 00:51:40

1樓:唐城冬

select * from (select 1 as num from table) t where num>0

在sql語句中 要使用contans必須建立什麼

2樓:兄弟連教育北京總校

前言:微軟的sql server資料庫是一個在中低端企業應用中佔有廣泛市場的關係型資料庫系統,它以簡單、方便、易用等特性深得眾多軟體開發人員和資料庫管理人員的鐘愛。但sql server 7.

0以前的資料庫系統由於沒有全文檢索功能,致使無法提供像文字內容查詢此類的服務,成為一個小小的遺憾。從sql server 7.0起,到如今的sql server 2000終於具備了全文檢索功能,使使用者可以高效地檢索儲存在資料庫char、varchar、text、ntext、nchar、nvarchar等資料型別列中的文字資料。

建立全文索引

在進行全文檢索之前,必須先建立和填充資料庫全文索引。為了支援全文索引操作,sql server 7.0新增了一些儲存過程和transact-sql語句。

使用這些儲存過程建立全文索引的具體步驟如下(括號內為呼叫的儲存過程名稱):

1. 啟動資料庫的全文處理功能(sp_fulltext_

database);;

2. 建立全文檢索目錄(sp_fulltext_catalog);

3.在全文檢索目錄中註冊需要全文索引的表(sp_fulltext_table);

4. 指出表中需要全文檢索的列名(sp_fulltext_

column);;

5. 為表建立全文索引(sp_fulltext_table);;

6. 填充全文檢索目錄(sp_fulltext_catalog)。

下面舉例說明如何建立全文索引,在本例中,對test資料庫book表中title列和notes列建立全文索引。

use test //開啟資料庫

//開啟全文索引支援,啟動sql server的全文搜尋服務

execute sp_fulltext_database ‘enable’

//建立全文檢索目錄ft_test

execute sp_fulltext_catalog ‘ft_test’, ‘create’

為title列建立全文索引資料元,pk_title為book表中由主鍵所建立的唯一索引,這個引數是必需的。

execute sp_fulltext_table ‘book’,‘create’, ‘ft_test’,‘pk_title’

//設定全文索引列名

execute sp_fulltext_column ‘book’, ‘title’, ‘add’

execute sp_fulltext_column ‘book’,‘notes’, ‘add’

//建立全文索引

execute sp_fulltext_table ‘book’, ‘activate’

//填充全文索引目錄

execute sp_fulltext_catalog ‘ft_test’, ‘start_full’

至此,全文索引建立完畢。

進行全文檢索

sql server 2000提供的全文檢索語句主要有contains和freetext。contains語句的功能是在表的所有列或指定列中搜尋:一個字或短語;一個字或短語的字首;與一個字相近的另一個字;一個字的派生字;一個重複出現的字。

contains語句的語法格式為:

contains(), )

其中,column是搜尋列,使用“*”時說明對錶中所有全文索引列進行搜尋。contains_search_

condition 說明contains語句的搜尋內容,其語法格式為:

[}] [...n]

下面就******_term和prefix_term引數做簡要說明:

******_term是contains語句所搜尋的單字或短語,當搜尋的是一個短語時,必須使用雙引號作為定界符。其格式為:

prefix_term說明contains語句所搜尋的字或短語字首,其格式為:

例如,下面語句檢索book表的title列和notes列中包含“database”或“computer”字串的圖書名稱及其註釋資訊:

select title, notes

from book

where contains(tilte, ‘database’) or contains(notes,‘database’)

or contains(title,‘computer’) or contains(notes,‘computer’)

freetext語句的功能是在一個表的所有列或指定列中搜尋一個自由文字格式的字串,並返回與該字串匹配的資料行。所以,freetext語句所執行的功能又稱做自由式全文查詢。

freetext語句的語法格式為:freetext(,‘freetext_string’)

其中,column是被搜尋列,使用“*”時說明對錶中的所有全文索引列進行搜尋。freetext_string引數指出所搜尋的自由文字格式字串。

例如,下面語句使用freetext語句搜尋book表中包含“successful life”字串的資料行:

select title, notes

from book

where freetext(*,‘successful life’)

如何在sql語句中使用保留字

3樓:千鋒教育

在sql語句中,有些特殊字元,是sql保留的。比如 ' [ ] 等。我們可以先看看它們的用法。

當需要查詢某資料時,加入條件語句,或著當你需要insert記錄時,我們用 ' 來將字元型別的資料引起來。比如:

select*from customers where city ='london' 當表的名字或列的名字中,含有空格等一些特殊字元時,我們需要用 將表名引起來,告訴語法分析器,號內的才是一個完整的名稱。比如

string sql = "select*from customers where customerid ='" + temp + "'"; 如果,我給temp賦值為 tom' or 1=1 ---

那麼你拼接起來的語句為 select * from customers where customerid = 'tom' or 1=1 --- '

哈哈,1=1 衡為真,---會把後面的sql語句註釋掉。而前面因為有輸入的 ' 而使的語句是合法的。那or的條件,會把所有的記錄都選出來。

這就是sql注入。在做使用者登陸時,如果沒有處理該問題,那你的系統受危害的可能性會很高的。