2011-04-12 10:06:23
| 分類:
資料庫| 標籤:|字型大小
大中小訂閱
在sql server 2005中,將表中字串轉換為數字的函式共2個:
1. convert(int,欄位名) 例如:select convert(int,'3')
2.cast(欄位名 as int) 例如:select cast('3' as int)
其實,一般情況下沒有必要把字串轉換為數字型別
假如需要比較兩個字段是否相等,但是乙個欄位為字串型別,乙個為數字型別,用「=」比較兩個值是否相等時,sql server會自動把字串轉換為數字再比較的!
例如:select da.title_name,dsc.name
from dbo.dv_duty dd
inner join dv_second_class dsc on(dsc.id=dd.area)
left join dv_asset da on(da.id=dd.record_id and dd.type='2')
where dd.area is not null
這個sql中,inner join dv_second_class dsc on (dsc.id=dd.area) 中dsc.id為數字型別,dd.area為字元型別,相當於這樣on(1='1')的判斷,這時候就會自動吧字串的'1'轉換為數字型別再比較的。
但是也有弊端,一旦字元型別轉換為數字型別出錯(說明字串的確就非數字組成的),sql就會丟擲異常。
sql server 2005中有判斷字段是否為數字的函式:
isnumeric(欄位名) -----假如欄位是數字型別返回1,不是就返回0
但是好像有的時候不好使,比如:select isnumeric('3,34') 就返回1
說明這個函式對字段值中全是數字但是數字間用「,」和「.」(逗號或點)隔開的都視為數字了!
sqlserver2005 之關鍵字top
最近在專案中提到top n,意思就是就是要做前多少的排名。之前看到過sqlserver關於這個關鍵字的很多特性,今天翻了下資料,複習回憶了下,現在總結下。備忘。top n 是查詢所影響的 最前面 行,所以他是不確定的。要使結果確定,必須加上order by 子句。即使加上了order by子句,結果...
sqlserver2005 之關鍵字top
最近在專案中提到top n,意思就是就是要做前多少的排名。之前看到過sqlserver關於這個關鍵字的很多特性,今天翻了下資料,複習回憶了下,現在總結下。備忘。top n 是查詢所影響的 最前面 行,所以他是不確定的。要使結果確定,必須加上order by 子句。即使加上了order by子句,結果...
SQL Server 2005中top關鍵字的用法
1 返回n條記錄數 select top n from 表名 查詢條件 2 返回總結果集中指定百分比記錄數 select top n percent from 表名 查詢條件 3 分頁查詢語句 select top pagesize from 表名 where userid not in selec...