CASE表示式的一些問題

2021-08-25 07:42:28 字數 1268 閱讀 8307

sql server根據表示式的結果中優先順序最高的資料型別確定case表示式結果的資料型別,而不是按實際返回結果的資料型別確定。這就意味著,如果case 表示式的乙個then子句返回varchar(30)值,而另乙個返回int值,表示式的結果將總是int,因為int的優先順序比varchar高。如果實際返回varchar(30)值,sql server將嘗試轉換它。如果該值不可轉換,將產生乙個執行時錯誤。如果可以轉換,它被轉換為int型別,當然,這可能會導致和原始值不一樣的排序行為。

摘自:sql server2005技術內幕 t-sql程式設計

另:[b]sql server 對資料型別使用以下優先順序順序:[/b]

[quote]1.使用者定義資料型別(最高)

2.sql_variant

3.xml

4.datetimeoffset

5.datetime2

6.datetime

7.smalldatetime

8.date

9.time

10.float

11.real

12.decimal

13.money

14.smallmoney

15.bigint

16.int

17.smallint

18.tinyint

19.bit

20.ntext

21.text

22.image

23.timestamp

24.uniqueidentifier

25.nvarchar(包括 nvarchar(max))

26.nchar

27.varchar(包括 varchar(max))

28.char

29.varbinary(包括 varbinary(max))

30.binary(最低)

[/quote]

以下摘自sql server聯機叢書

case 搜尋表示式:

[quote]1.按指定順序對每個 when 子句的 boolean_expression 進行計算。

2返回 boolean_expression 的第乙個計算結果為 true 的 result_expression。

3.如果 boolean_expression 計算結果不為 true,則在指定 else 子句的情況下資料庫引擎將返回 else_result_expression;若沒有指定 else 子句,則返回 null 值。[/quote]

Java使用正規表示式的一些問題

string類裡的matches方法能匹配全字串,而不能匹配字串中的一部分,這個地方好坑,一次專案中在這裡耗時很長 string str my phone is 13376543489.system.out.println str.matches 0 9 str 13376543489 system...

python中正規表示式的一些問題

今天聽到一句話,覺得很在理 當你遇到乙個問題,想到用正規表示式解決時,就變成了兩個問題 這也從側面說明了正規表示式比較難理解。下面我將用通俗易懂的方式總結一下,最近遇到的一些正規表示式的問題 匹配模式為r d 在這個模式中,d 表示貪婪匹配,匹配前面的字元 d,也就是數字0次或無數次,但是我們的字串...

一些正規表示式

要嚴格的驗證手機號碼,必須先要清楚現在已經開放了哪些數字開頭的號碼段,目前國內號碼段分配如下 移動 134 135 136 137 138 139 150 151 157 td 158 159 187 188 聯通 130 131 132 152 155 156 185 186 電信 133 153...