回覆列表
  • 1 # 使用者8461021162376

    在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

    說明這個函式對欄位值中全是數字但是數字間用“,”和“.”(逗號或點)隔開的都視為數字了!

  • 中秋節和大豐收的關聯?
  • 如果評價KPL比賽當中各位觀眾質疑打假賽的事情,是否存在坑害觀眾競猜幣的問題?