首先,sqlserver裡的識別符號有一定的規則,比如 你 create table abc 123(...) 那麼中間含有空格,它不是符合規則的。
你會寫做 create table [abc 123](....) 即以來定界識別符號。
quotename將 字串成為有效的識別符號。
它有什麼用呢? 我舉個例子:
你有個表名字叫做 aabb
當某些應用動態語句查詢時 你如何寫呢 exec('select * from aabb') ?x
set @sql='select * from ' + quotename('aabb') exec(@sql)
當然你也可以直接寫出轉義的寫法
select * from [aa]bb]
也就是說,quotename 使函式中的輸入成為乙個有效的識別符號。 比如上例中 aabb 不是乙個有效的識別符號。
還有一點就是quotename函式有幾種寫法: quotename('aa') 生成的有效的識別符號為 [aa] quotename('aa','') 生成的有效的識別符號為 [aa] quotename('aa','''') 生成的有效的識別符號為 'aa'
解釋2:
簡單來說吧 比如你有乙個表,名字叫 index
你有乙個動態查詢,引數是表名
declare
@tbname
varchar
(256
) set
@tbname='
index'--
-查這個表裡的資料:
print('
select * from '+
@tbname
) exec('
select * from '+
@tbname)--
這樣print出來的資料是
select
*from
index
因為index是字鍵字,肯定出錯,加上括號就可以了:
select
*from
[index
]這便有了quotename,即:
print('
select * from '+
quotename
(@tbname
)) --
結果:select * from [index]
exec('
select * from '+
quotename
(@tbname
))返回帶有分隔符的 unicode 字串,分隔符的加入可使輸入的字串成為有效的 microsoft sql server 2005 分隔識別符號。
SQL2005關於quotename的用法
首先,sqlserver裡的識別符號有一定的規則,比如 你 create table abc 123 那麼中間含有空格,它不是符合規則的。你會寫做 create table abc 123 即以來定界識別符號。quotename將 字串成為有效的識別符號。它有什麼用呢?我舉個例子 你有個表名字叫做 ...
SQL2005乾淨解除安裝
昨天解除安裝安裝sql2005,安裝顯示成功之後可是就是沒有進入sql的檔案,只有配置工具,於是就解除安裝了,這下可好,解除安裝沒卸乾淨,又重新安裝,這次不僅顯示上一次已經安裝的檔案已經安裝安裝完成,還顯示只有配置工具,反覆弄了好幾次還是不成功,今天起來又開始我的安裝歷程,我先決定把該解除安裝的解除...
SQL2005 索引設計
1 評估索引本身的占用空間,當索引相對於其資料本身過大可能會無明顯作用。這種情況體現在 表很小,索引列過多,索引碎片過多。當索引在select中不起作用時,你還必須在insert和update delete這些操作中去維護這些不起作用的資料。2 in語句不一定不能使用索引,where id in 1...