SQL SERVER 2005字串轉換為數字

2021-06-17 23:14:15 字數 970 閱讀 2180

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...