Sqlserver 缺乏很多基本型別

2021-08-25 06:34:11 字數 1375 閱讀 2098

編寫了n年的t-sql,一回頭,發現這門語言居然缺少很多基本的型別。

1.列舉

雖然列舉看起來就是數字,但是列舉比起數字來說更加好讀

。mysql

有enum,比如

billtype(單據型別)把它定義為列舉,

從而在編寫

sql的時候更加方便。

mysql

支援列舉案例:

mysql> create table enum_test(

);用字串表達數字,並且和數字的效率一樣高

,還可以做in

操作,雖然不太完美,但是也在完美的路上了。更細節的,

如果插入的不在規定範圍內,

mysql

會把它當成

null

處理,這點不太好。

比如我們常常會遇到這樣的**:

sql = @"select 0  buytotal,-(ifnull(sum(if(bill.vchtype in (34,6,66,28) ...";

如果支援列舉的話,**應該類似:

sql = foo(@"select 0  buytotal,-(ifnull(sum(if(dlya.vchtype in (

vchtype.

billsale,

vchtype.

billbuy) ...";

感覺就會好很多了。

可是 sqlserver 只能用int來代替。

2. 布林型別

無論列定義,還是

tsql

變數,引數,都不支援

bool

型別,智慧型用

bit模擬。顯然1/0,不如 

true/false 

更好閱讀和使用。

3. 陣列

sql2008 

有表變數的支援,聊勝於無。  陣列,多常用的型別!     

4. 類(

class)

儘管模擬一般的型別要複雜的多,可是類依然是型別。

sqlserver

也是沒有這樣的型別的。

以我們的產品為例,動則幾百個儲存過程,這樣的複雜度,當然就有了分層

和封裝的需求。可是sqlserver並不能很好的支援我們的想法。再說

定義聚集函式這樣的特殊功能,用

oracle

,就採用

sql就可以做到——因為它支援類和包。在

sqlserver

,mysql要做這樣的聚集函式,

都必須用

dll,麻煩啊

。人的適應能力真強,想起剛剛用php之類的語言,連偵錯程式也沒有,用print一路的也過來了。不過畢竟過的不爽。

注:oracle方面的內容都是來自資料,自己並無親自測試。

Sql Server 基本函式

sql server基本函式 大家在程式設計的時候,絕大多數時是離不開與資料庫打交道的,大家在對資料庫的資料進行處理時,往往是先讀取資料庫的記錄後,然後通過程式語言對其進行加工處理後,再存到資料庫。但有時候通過若sql自帶的函式來對資料進行處理,不但能直接獲取自己所需的結果,還能節省不少自己的程式 ...

SQLServer基本函式

1.字串函式 長度與分析用 datalength char expr 返回字串包含字元數 但不包含後面的空格 substring expression,start,length 不多說了 取子串 right char expr,int expr 返回字串右邊 int expr 個字元字元操作類 up...

SQLServer基本函式

1.字串函式 長度與分析用 datalength char expr 返回字串包含字元數,但不包含後面的空格 substring expression,start,length 不多說了,取子串 right char expr,int expr 返回字串右邊int expr個字元 字元操作類 upp...