當前位置:首頁 » 編程語言 » sqlserver標識符
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlserver標識符

發布時間: 2023-03-05 17:18:39

sql server中,N''表示什麼意思

加上 N 代表存入資料庫時以 Unicode 格式存儲

N'string' 表示string是個Unicode字元串

Unicode 字元串的格式與普通字元串相似,但它前面有一個 N 標識符(N 代表 SQL-92 標准中的國際語言 (National Language))。N 前綴必須是大寫字母。例如,'Michél' 是字元串常量而 N'Michél' 則是 Unicode 常量。Unicode 常量被解釋為 Unicode 數據,並且不使用代碼頁進行計算。Unicode 常量確實有排序規則,主要用於控制比較和區分大小寫。

Unicode字元串常量支持增強的排序規則。

(1)sqlserver標識符擴展閱讀:

Unicode是國際組織制定的可以容納世界上所有文字和符號的字元編碼方案。目前的Unicode字元分為17組編排,0x0000 至 0x10FFFF,每組稱為平面(Plane),而每平面擁有65536個碼位,共1114112個。然而目前只用了少數平面。UTF-8、UTF-16、UTF-32都是將數字轉換到程序數據的編碼方案。

通用字元集(Universal Character Set, UCS)是由ISO制定的ISO 10646(或稱ISO/IEC 10646)標准所定義的標准字元集。UCS-2用兩個位元組編碼,UCS-4用4個位元組編碼。

歷史上存在兩個獨立的嘗試創立單一字元集的組織,即國際標准化組織(ISO)和多語言軟體製造商組成的統一碼聯盟。前者開發的 ISO/IEC 10646 項目,後者開發的統一碼項目。因此最初制定了不同的標准。

㈡ sqlserver多表查詢,根據動態獲取的where條件

Select 欄位a from 表1 where 『獲取的值』 like 欄位a
union
Select 欄位b from 表2 where 『獲取的值』 like 欄位b

㈢ sql server的對象命名規則是什麼

自己搜索一下就是了,我給你一段:

為了提供完善的資料庫管理機制,SQL Server 設計了嚴格的命名規則。在創建或引用資料庫實體,如表、索引、約束等時,必須遵守SQL Server 的命名規則,否則有可能發生一些難以預料和檢查的錯誤。
本文將講述:標識符的分類和格式規定;資料庫對象的命名規定與使用原則。希望對您會有所幫助。
標識符分類
SQL Server的所有對象,包括伺服器、資料庫以及資料庫對象,如表、視圖、列、索引、觸發器、存儲過程、規則、默認值和約束等都可以有一個標識符。對絕大多數對象來說,標識符是必不可少的,但對某些對象如約束來說,是否規定標識符是可選的。對象的標識符一般在創建對象時定義,作為引用對象的工具使用。
例如下面的SQL語句:
Create table student
(
id int primary key,
name varchar(20)
)
這個例子創建了一個表格,表格的名字是一個標識符:student;表格中定義了兩列,列的名字分別是id,name,他們都是合法的標識符。這個例子還定義另外一個未命名的主鍵約束。
SQL Server一共定義了兩種類型的標識符:規則標識符(Regular identifier)和界定標識符(Delimited identifier)。
規則標識符
規則標識符嚴格遵守標識符有關格式的規定。所以在T-SQL語句中凡是規則標識符都不必使用界定符,如[]和『』,來進行界定。
如上述例子中使用的表名student 就是一個規則標識符,在student上不必添加界定符。
界定標識符
界定標識符是那些使用了如[]和『』等界定符號來進行位置限定的標識符,使用了界定標識符,既可以遵守標識符命名規則,也可以不遵守標識符命名規則。
Select * from [student] 是要從student 表格中查詢出所有的數據與
Select * from student 等效。
為什麼呢?因為在「[]」中的標識符遵守標識符命名規則,「[]」被忽略不計。
但如果是不遵守標識符命名規則的標識符,那麼在T-SQL語句中必須使用界定符號加以限定,如:
Select * from [my table]
Where [order]=10
在這個例子中,必須使用界定標識符,因為在from子句中的標識符my talbe中含有空格,而where子句中的標識符order 是系統保留字(在查詢分析器里「order」變藍色)。這兩個標識符都不遵守標識符命名規則,必須使用界定符,否則無法通過代碼編譯。
標識符格式
標識符格式的規定,其具體內容如下:
標識符的首字母必須是以下兩種情況之一:
所有在統一碼(Unicode)2.0標准規定的字元,包括26個英文字母a-z和A-Z,以及其他一些語言字元,如漢字。例如可以給一個表格命名為「學生基本情況」。下劃線「-」、「@」或「#」。
標識符首字母後的字元可以是:
所有在統一碼(Unicode)2.0標准規定的字元,包括26個英文字母a-z和A-Z,以及其他一些語言字元,如漢字。下劃線「-」、「@」、「$」或「#」。
0,1,2,3,4,5,6,7,8,9。
標識符不允許是T-SQL的保留字。
由於T-SQL不區分大小寫,所以無論是保留字的大寫還是小寫都不允許使用。
標識符內部不允許有空格或特殊字元。
Select * from stu[de]nt –編譯器將返回錯誤信息。因為在標識符stu[de]nt中包含了特殊字元「[」和「]」,所以在編譯上述語句時出錯。
?
以某些特殊符號開頭的標識符在SQL Server系統中具有特定的含義。如「@」開頭的標識符表示這是一個局部變數或是一個函數的參數;以「#」開頭的標識符表示這是一個臨時表或存儲過程;一個以「##」開頭的標識符表示這是一個全局的臨時資料庫對象。T-SQL的全局變數以標志「@@」開頭。為避免同這些全局變數混淆,建議不要使用「@@」作為標識符的開始。
無論是界定標識符還是規則標識符都最多隻能容納128個字元,對於本地的臨時表最多可以有116個字元。
對象命名規則
SQL Server 2000 的資料庫對象名字由1-128個字元組成,不區分大小寫。在一個資料庫中創建了一個資料庫對象後,資料庫對象的全名應該由伺服器名、資料庫名、擁有者名和對象名這四個部分組成,格式如下:
[[[server.][database].][owner_name].]object_name 命名必須都要符合標識符的規定。
在實際引用對象時,可以省略其中某部分的名稱,只留下空白的位置。
實例的命名習慣
在SQL Server 2000中默認實例的名字採用計算機名,實例的名字一般由計算機名字和實例名字兩部分組成。
總之,正確掌握資料庫的命名和引用方式是用好SQL Server 2000的前提,也有助於用戶理解SQL Server 2000中的其他內容。

㈣ SQLServer中的「SET ANSI_NULLS ON」和「SET QUOTED_IDENTIFIER ON」有什麼實際的用處

這些是 SQL-92 設置語句,使 SQL Server 2000/2005 遵從 SQL-92 規則。
當 SET QUOTED_IDENTIFIER 為 ON 時,標識符可以由雙引號分隔,而文字必須由單引號分隔。當 SET QUOTED_IDENTIFIER 為 OFF 時,標識符不可加引號,且必須符合所有 Transact-SQL 標識符規則。
SQL-92 標准要求在對空值進行等於 (=) 或不等於 (<>) 比較時取值為 FALSE。當 SET ANSI_NULLS 為 ON 時,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 語句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 語句仍會返回零行。
當 SET ANSI_NULLS 為 OFF 時,等於 (=) 和不等於 (<>) 比較運算符不遵從 SQL-92 標准。使用 WHERE column_name = NULL 的 SELECT 語句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 語句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 語句返回所有不為 XYZ_value 也不為 NULL 的行。

㈤ SqlServer怎麼能讓identity標識符在刪除記錄空缺後自動重排

這個好像不能實現吧。自動增長列不會重新改變的。 你可以使用row_number來將它排序,不知道這樣能否滿足你的需求。如果你非要使用標識列,我提供兩種方法可以做到,一:是將表整個表復制(除了標識列),重新加一個標識列。二:寫一個觸發器將後面的行移動上來但是兩種效果都不是很好。

㈥ SQL中如何截取標識符前、標識符中間、標識符後的欄位

幾個概念:
A、標識符:是資料庫對象的名稱。
資料庫對象的名稱被看成是該對象的標識符。Microsoft® SQL Server™ 中的每一內容都可帶有標識符。伺服器、資料庫和資料庫對象(例如表、視圖、列、索引、觸發器、過程、約束、規則等)都有標識符。大多數對象要求帶有標識符,但對有些對象(如約束)標識符是可選項。
B、保留關鍵字:是sql語言的語法。屬於代碼的范疇。
保留關鍵字是用來定義、操作和訪問資料庫。保留關鍵字是 SQL Server 使用的 Transact-SQL 語言語法的一部分,用於分析和理解 Transact-SQL 語句和批處理。盡管在 Transact-SQL 腳本中,使用 SQL Server 保留關鍵字作為標識符和對象名在語法上是可行的,但規定只能使用分隔標識符。
C、字元串:數據類型的一種,數據類型有整數型、字元串型等。屬於數據的范疇。
每個列、局部變數、表達式和參數都有一個相關的數據類型。即屬於某種數據類型。
D、通配符、轉義符:這2個是跟字元串相關的概念。一般出現在字元串中。
比如 like 』dsd%『 , dsd% 是字元串。%是通配符。這個語句的含義大家應該都知道,^_^。
使用轉義符,可以把通配符改變成普通字元。2種方法:
1、[]是默認的轉義符,裡面的通配符(裡面只能是通配符),都當做普通字元處理:
like 』dsd[%]『,這時,%就是個普通字元了,查找條件就是要某個欄位值完全等於 dsd% 。
2、用ESCAPE關鍵字定義轉義符,
like 』dsd/%『 ESCAPE 』/' 效果同 like 』dsd[%]『
還有一種轉義符情況:
大家知道,單引號一般可用來包含字元串,如果字元串中有單引號是普通字元,那麼就同時有了2種意思的單引號,怎麼區分呢?就要用2個單引號來轉義為普通字元,如 like 『ds''d』 ,其實就是指字元串:ds'd
後面提到的QUOTENAME函數,默認是用[]來做分隔符,如果字元串中有[],函數轉換後,字元串中的[]就要用兩個]]來轉義,表明這個[]是個普通字元,與字元串前後的分隔符 [] 相區別。
步入正題,
標識符,分為:
一、常規標識符:符合常規標識符規則的標識符。
常規標識符規則如下:(參考sqlserver的聯機幫助)
1、。。。。。
2、。。。。。
3、。。。。。
4、。。。。。
二、分隔標識符:包含在雙引號 " 或者方括弧 [ ] 內的標識符就是分隔標識符。
注意:雙引號 " 或者方括弧 [ ] 是分隔符。
在 Transact-SQL 語句中,對不符合常規標識符規則的標識符必須用雙引號或方括弧來分隔。符合標識符格式規則的標識符可以分隔,也可以不分隔。
1、當QUOTED_IDENTIFIER 為 ON 時,默認是on的。 SQL Server 遵循 SQL-92 規則:
雙引號只能用於分隔標識符,不能用於分隔字元串。
為保持與現有應用程序的兼容性,SQL Server 並不完全強制該規則。如果字元串沒有超過標識符的長度,則該字元串可包含在雙引號內。但不建議這樣做。
單引號必須用來包含字元串,不能用於分隔標識符。
如果字元串包含單引號,則需要在單引號前再增加一個單引號:
SELECT * FROM "My Table"
WHERE "Last Name" = 'O''Brien'
注意:"Last Name",你可以寫成'Last Name'而不會報語法錯誤,是因為,sql認為是進行字元串的比較了,比如寫成'Last Name'='Last Name',比較結果為真,表中的全部記錄就被select出來了。而如果寫成:WHERE "Last Name" = "O''Brien",即等號右邊改成雙引號,則會把O''Brien當成一個標識符(資料庫對象),即當成一個欄位名,運行時,會提示沒有O''Brien列。 2、當 QUOTED_IDENTIFIER 為 OFF 時,對於雙引號和單引號的使用,SQL Server 遵循如下規則:
引號不能用於分隔標識符,而是用括弧作為分隔符。
單引號或雙引號可用於包含字元串。
如果使用雙引號,嵌入的單引號不需要用兩個單引號來表示:
SELECT * FROM [My Table]
WHERE [Last Name] = "O'Brien"
常規標識符和分隔標識符包含的字元數必須在 1 到 128 之間

另外:
將標識符用作參數:(具體請參考聯機幫助)
許多系統存儲過程、函數和 DBCC 語句都把對象名當作參數。其中一些參數接受多部分對象名,另一些則只接受單部分名稱。接受單部分對象名稱還是多部分對象名稱決定了 SQL Server 在內部如何分析和使用參數。 。。。。。。。
另外:
QUOTENAME函數:
msdn解釋:返回帶有分隔符的 Unicode 字元串,分隔符的加入可使輸入的字元串成為有效的 Microsoft® SQL Server™ 分隔標識符。
以下示例接受字元串 abc[]def 並使用 [ 和 ] 字元來創建有效的 SQL Server 分隔標識符:
SELECT QUOTENAME('abc[]def')
下面是結果集:
[abc[]]def]
(1 row(s) affected)
注意,字元串"abc[]def"中的右括弧有兩個,用於表示轉義符,轉換成普通字元,與分隔符 [] 相區別。
解釋:字元串 abc[]def 中的[]是當做普通字元,所以用 ] ] 來表示 ] 是個普通字元,即表明中間的 [] 就是個普通字元。
如果是:SELECT QUOTENAME('abc[]def' , '()' ) ,不用[]來做分隔符,那麼結果是:
(abc[]def) ,就不用兩個]] 來轉義了,因為新的字元串中只有一種意思的[],即普通字元。
這是個通用的規則,比如字元串中含有單引號 ' 為普通字元串時,比如 :ds'd ,
like 語句就要改成:like 『ds『』d』,而不是: like 'ds'd' 。即2個單引號表示轉義符,轉換成普通單引號字元 ' 。