專案知識點總結 SQL(一)。

2021-09-29 13:30:26 字數 2067 閱讀 2564

這次專案中,資料庫時間欄位很奇怪。日期與時間是分開的,並且是數字型別。而且時間位數不固定。

可能是6位,比如:120506,12時05分06秒,又或者80806,8時08分06秒,還可能時1206,還原出來應該時001206,也就是0時12分06秒。總之時間是1到6位的。這就造成一些困難。

需求是取最大時間,這個樣子的話我們只能做字串拼接成乙個12位的字串,再轉換為整數型別才行。

用到函式:case(),convert(),len(),cast().

cast(

(convert(nvarchar(10), 日期)

+(case

when len(時間) = 6 then convert(nvarchar(10), product_time)

when len(時間) = 5 then '0' + convert(nvarchar(10), product_time)

when len(時間) = 4 then '00' + convert(nvarchar(10), product_time)

when len(時間) = 3 then '000' + convert(nvarchar(10), product_time)

when len(時間) = 2 then '0000' + convert(nvarchar(10), product_time)

when len(時間) = 1 then '00000' + convert(nvarchar(10), product_time)

when len(時間) = 0 then '000000' + convert(nvarchar(10), product_time)

end)

) as decimal)

as maxtime

最後轉出來應該是這樣的:

列轉行函式。列轉行的意思其實是將一條記錄拆成多條記錄。

insert into achievements values('任寒毅','98',100,56,98);
插入資料。

select name as 姓名, chinese as 語文, mathematics as 數學,english as 英語, chemistry as 化學 from achievements

像這樣,我進行行轉列後就會把他拆成多條資料。

select name as 姓名,tb1.科目,tb1.成績 from achievements

unpivot(成績 for 科目 in (chinese,mathematics,english,chemistry)) as tb1

len()函式,返回長度

cast()和convert()函式轉換型別。

用法:cast(列名 as 型別)  convert(型別,列名)

例:

select cast('1' as int)

select convert(int,'1')

case也可以用來做行轉列稍微比較麻煩,不建議用,感興趣也可以到網上搜尋一下。

case用法:

(case

when 條件(true or false) then 賦值

end)as 列名

sql 總結知識點

對於存放時間格式為2003090709 56 00 轉換為datetime型別方法 cast stuff a.cyrq,9,0,as datetime 結果為 2003 09 07 09 56 00.000 而將標準datetime型別轉換為字元型方法為 declare begin datetime...

專案小結知識點總結

一 android控制項的選擇 scrollview,viewflipper,viewpager 二 android的布局 相對布局,幀布局 三 webview網路顯示控制項 四 android布局的動態載入 五 顏色背景不使用使用color類 六 android中的動畫 七 解析json資料,以及...

SQL書部分知識點總結

1.在insert語句看中不命名列的好處在於節約了輸入,並使得sql語句更短。不利之處在於,不容易看到資料屬於那一列。2.插入新資料和更新已經存在的資料之間的主要差別在於需要指明要更改哪些記錄。3.select from location 與下面的 意義相同 select locationid,st...