在SQL SERVER 2005中,將表中字符串轉(zhuǎn)換為數(shù)字的函數(shù)共2個:

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比于都網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式于都網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋于都地區(qū)。費用合理售后完善,十年實體公司更值得信賴。
1. convert(int,字段名) 例如:select convert(int,'3')
2. cast(字段名 as int) 例如:select cast('3' as int)
其實,一般情況下沒有必要把字符串轉(zhuǎn)換為數(shù)字類型
假如需要比較兩個字段是否相等,但是一個字段為字符串類型,一個為數(shù)字類型,用“=”比較兩個值是否相等時,SQL SERVER會自動把字符串轉(zhuǎn)換為數(shù)字再比較的!
例如:
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為數(shù)字類型,dd.AREA為字符類型,相當于這樣on(1='1')的判斷,這時候就會自動吧字符串的'1'轉(zhuǎn)換為數(shù)字類型再比較的。
但是也有弊端,一旦字符類型轉(zhuǎn)換為數(shù)字類型出錯(說明字符串的確就非數(shù)字組成的),SQL就會拋出異常。
SQL SERVER 2005中有判斷字段是否為數(shù)字的函數(shù):
ISNUMERIC(字段名) -----假如字段是數(shù)字類型返回1,不是就返回0
但是好像有的時候不好使,比如:select isnumeric('3,34') 就返回1
說明這個函數(shù)對字段值中全是數(shù)字但是數(shù)字間用“,”和“.”(逗號或點)隔開的都視為數(shù)字了!
有兩種。
1.轉(zhuǎn)換(int,字段名)
例如:選擇convert(int,'3')
選擇cast('3'作為int)
一般來說,沒有必要將字符串轉(zhuǎn)換為數(shù)字類型,如果你需要比較兩個字段是相等的,但為字符串類型字段,類型,用“=”來比較這兩個值是相等的,SQLSERVER將自動將字符串轉(zhuǎn)換為一個數(shù)字,然后比較。
擴展資料:
注意事項:
這兩個函數(shù)都執(zhí)行強制轉(zhuǎn)換,但是語法不同。據(jù)說有一些不同的轉(zhuǎn)換,但我更習慣于使用轉(zhuǎn)換函數(shù),它更像一個函數(shù)的語法一方面,可以指定的格式轉(zhuǎn)換,將時間和價值轉(zhuǎn)換為一個字符串。
對于數(shù)據(jù)類型的確切值,轉(zhuǎn)換后的字符串是我們存儲的值。如:
聲明@iintset@i=123456789print'test:'+轉(zhuǎn)換(varchar(20),@i)
輸出是:test:123456789
對于具有近似值的數(shù)據(jù)類型,情況就不那么簡單了。
聲明@ifloatset@i=123456789print'test:'+轉(zhuǎn)換(varchar(20),@i):test:1.23457e+008
轉(zhuǎn)義字符有:\a、\b、\n、\f、\t、\v等。
除此之外還有如HTML轉(zhuǎn)義符、java轉(zhuǎn)義符、xml轉(zhuǎn)義符、 oracle轉(zhuǎn)義符、sql轉(zhuǎn)義符 、sqlserver 轉(zhuǎn)義符、php轉(zhuǎn)義符、asp轉(zhuǎn)義符、vb轉(zhuǎn)義符、 javascript轉(zhuǎn)義符等等,還有網(wǎng)址中的百分號。
以下是轉(zhuǎn)義字符用處的相關(guān)介紹:
轉(zhuǎn)義無非是兩種情況:將普通字符轉(zhuǎn)為特殊用途,一般是編程語言中,用于表示不能直接顯示的字符,比如后退鍵,回車鍵等。用來將特殊意義的字符轉(zhuǎn)換回它原來的意義。
一般用在正則表達式中。還有有些腳本語言是弱類型,有些語言比如html 并不是編程語言,而是標記語言,有些語言只有一種類型,比如shell腳本語言,這些語言中字符串都不加引號” ” ,或者可以不加引號“ ”,所以有時候需要轉(zhuǎn)義字符說明某字符此時的身份是普通字符,而不是有特殊意義的元字符。
以上資料參考百度百科——轉(zhuǎn)義字符
你看下你日期是datetime類型還是varchar類型
如果是varchar類型
select?replace(replace(replace(日期字段,'-',''),':',''),'?','')?from?表名
如果是datetime類型
select?replace(replace(replace(convert(varchar,日期字段,120),'-',''),':',''),'?','')?from?表名
不知道你的字符串類型的日期是什么樣子的,下面有一個例子:
Test_OldTable是包含19990101等nvarchar數(shù)據(jù)類型的表,
Test_NewTable是包含DateTime數(shù)據(jù)類型的表
sql語句:
INSERT INTO Test_NewTable(NewDate)
SELECT CAST(OldDate AS DateTime)
FROM Test_OldTable
其他的方法還有很多,給你個鏈接,看看吧,網(wǎng)上多找找
declare @b int
set @a = '123'
set @b = 123
cast(@a as int)--就是把@a轉(zhuǎn)換為int類型的
cast(@b as varchar(20))--就是把@b轉(zhuǎn)換為varchar類型的
declare @a varchar(20)
set @a = '12345(789)'
print left(@a, CHARINDEX ('(',@a,1)-1 )
--輸出12345
網(wǎng)頁標題:sqlserver轉(zhuǎn)換符,sqlserver轉(zhuǎn)義字符
新聞來源:http://chinadenli.net/article32/dsidgsc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google、關(guān)鍵詞優(yōu)化、、網(wǎng)站制作、企業(yè)網(wǎng)站制作、自適應網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)