--2.2 謂詞和運算子
use tsqlfundamentals2008;
goselect orderid, custid, empid, orderdate
from sales.orders
where (custid=1
and empid in(1,3,5))
or(custid=85
and empid in (2,4,6))
--2.3 case表示式
select productid, productname, categoryid,
case categoryid
when 1 then 'beverages'
when 2 then 'condiments'
else 'unknown category'
end as 'categaryname'
from production.products;
--case&ntile函式
select orderid, custid, val,
case ntile(3) over(order by val)
when 1 then 'low'
when 2 then 'medium'
when 3 then 'high'
else 'unknown'
end as titledesc
from sales.ordervalues
order by val;
--case&when
select orderid, custid, val,
case
when val < 1000.00 then 'less than 1000'
when val between 1000.00 and 3000.00 then 'between 1000 and 3000'
when val > 3000.00 then 'more than 3000'
else 'unknown'
end as valuecategory
from sales.ordervalues
--2.4 null值
--sql支援用三值謂詞邏輯,這意味著謂詞的計算結果可以是true, false或unknown
--對兩個null進行比較的表示式(null=null),其計算結果為unknown
select custid, country,region,city
from sales.customers
where region is null
--ansi sql有兩種unique約束:一種將多個null值視為相等的(只允許有乙個null值),
--另一種則將多個null值視為不同的(允許有多個null值)。sql server只實現的前者
--2.5 同時操作
select orderid, custid, val
from sales.ordervalues
where
case
when val < 2000.00 then 'no'
when val < 3000.00 then 'yes'
else 'no'
end = 'yes'
--2.6 處理字元資料
--普通字元資料型別包括char和varchar,unicode字元資料報括nchar和nvarchar,
--他們兩者的區別是:普通的字元使用乙個位元組(byte)來儲存每個字元,而unicode
--字元則需要兩個位元組。
--名稱中不包含var元素的任何資料型別都是固定長度的(char,nchar),對於這樣的類
--型,sql server會按照為列定義的大小,在行中為該列預留出固定的空間,所以該
--列的長度並不是字串中字元的實際個數。
--名稱中含有var元素的資料型別是可變長度的(varchar,nvarchar),sql server在行
--中會按照字串的實際長度來儲存資料,外加兩個額外的位元組以儲存資料的偏移值。
--在定義可變長度的資料型別時,可以使用max說明符,而不必指定字元的最大數量。
select empid, firstname + n' ' + lastname as fullname
from hr.employees
go--通過將乙個名為concat_null_yields_null的會話選項設定為off,就可以改變
--sql server處理串聯的方式。這時,sql server將把null值作為空字串來進行串聯。
set concat_null_yields_null off
select custid, country, region, city, country + n',' + region + n',' + city as location
from sales.customers
set concat_null_yields_null on
go--coalsce函式,替換字串
select custid, country, region, city,
country + n',' + coalesce(region,n'') + n',' + city as location
from sales.customers
--substring函式,提取子串,sql server起始index為1
select substring(n'abcde', 1, 3)
--left和right函式是substring函式的簡略形式
select left(n'abcde', 3)
select right(n'abcde', 3)
--len和datalength函式
--對於unicode字元,每個字元需要兩個位元組的儲存空間;因此字串的
--字元數是位元組數的一半。如果要得到位元組數,則應該使用datalength函式。
select len(n'abcde') --5
select datalength(n'abcde') --10
--charindex函式 返回字串中某個子串第一次出現的起始位置
select charindex(' ', n'anders fan')
--patindex函式 返回字串中某個模式第一次出現的起始位置
select patindex(n'%fan%', n'anders fan is me')
--replace函式 將字串中出現的所有某個子串替換為另乙個字串
select replace(n'anders fan', n'anders', n'xufei')
--可以使用replace函式來計算字串中某個字元出現的次數
select len(n'anders fan') - len(replace(n'anders fan', n'n', n'')) as num
--replacate函式 以指定的次數複製字串值
select replicate(n'anders ', 100) as [the king]
--為每個**商的整數id生成乙個10位數字的字串表示,不足10位時,前面補0
select supplierid,
right(replicate(n'0', 9) + cast(supplierid as varchar(10)), 10)
as strsupplierid
from production.suppliers
--stuff函式
select stuff(n'xyz', 2, 1, n'abc') --xabcz
--upper lower
select upper(n'anders fan')
select lower(n'anders fan')
--like謂詞
--%萬用字元 代表任意長度的字串
select empid, lastname
from hr.employees
where lastname like n'd%'
-- _萬用字元 代表任意單個字元
select empid, lastname
from hr.employees
where lastname like n'_e%'
--萬用字元 方括號中包括一列字元,表示必須匹配列指定字元中的乙個字元
select empid, lastname
from hr.employees
where lastname like n'[abc]%'
--[-]萬用字元 方括號中包含乙個字元範圍,表示必須匹配指定範圍內的乙個字元
select empid, lastname
from hr.employees
where lastname like n'[a-e]%'
--[^]萬用字元 ^後面跟著乙個字元列或範圍,表示不屬於指定字元列或範圍內的任意單個字元
select empid, lastname
from hr.employees
where lastname like n'[^a-m]%'
--escape 轉義字元
第二章 select 查詢
檢視當前使用者的表及部分字段資訊 select table name,column name,data type,data length,nullable from user tab columns where table name bonus 檢視當前使用者的表 檢視?select from ta...
第二章 繼承(2)
1.繼承條件下構造方法的呼叫規則 i.如果子類的構造方法中沒有通過super顯示呼叫父類的有參方法,也沒有通過this顯示呼叫自身的其他構造方法,則系統會預設先呼叫父類的無參構造方法,這時有無 super 一樣 ii.如果子類的構造方法中乙個super顯示呼叫父類的有參構造方法,則將執行父類相應的構...
第二章 順序表
線性表是具有相同特性的資料元素的乙個有限序列。靜態順序表。define list init size 100 線性儲存空間的初始分配量。typedef structsqlist 動態線性表。typedef structsqlist 線性表宣告 sqlist l l.data elemtype mal...