在sql語句中怎樣把char型別轉換成int型別

時間 2022-04-18 01:55:21

1樓:楊子電影

首先char型別的必須是數字,將字元的數字轉成數字,比如'0'轉成0可以直接用加法來實現;

例如:將pony表中的d 進行排序,可d的定義為varchar,可以這樣解決;

select * from pony order by (d+0);

在進行ifnull處理時,比如 ifnull(a/b,'0') 這樣就會導致 a/b成了字串,因此需要把'0'改成0,即可解決此困擾;

比較數字和varchar時,比如a=11,b="11ddddd"。

char型別佔1位元組,就是8位,所能儲存的正整數是 0111 1111,即127。現在將 int 型的整數i= 128 賦予ch,會產生溢位。

因128是 int 型,佔 4 位元組,二進位制**為 0000 0000 0000 0000 0000 0000 1000 0000.。若將它賦給乙個只有8位的char 型別變數,只能將低8位的1000 0000 放進去,其他的都會被刪掉。

整數在計算機中都是以補碼的形式儲存的,此時1000 0000 在計算機的眼裡,是乙個補碼,最左邊是 1 表示負數,補碼1000 0000 所對應的十進位制是 -128,所以最後輸出的就是 -128。因此溢位會使得最大正整數變成最小負整數。

2樓:

首先char型別的必須是數字

convert(int,[char型別的欄位名])

3樓:匿名使用者

cast(str as int)

4樓:西安_白小鵬

sql server: convert(int,'12345')

oracle : to_number('12345')

sql語句中怎樣將字元型別轉換成數字型別

5樓:匿名使用者

先檢查金額列的資料是否都符合小數規範,轉為數字格式只有是數字的字串才能轉,如000012轉為12,.55轉為0.55,若是個英文符號等字元轉了就報無效數字型別的錯。

轉換的方式很多,但是字串轉換成數字的前提是字串中只包含了數字或者小數點。

可使用convert函式,cast 和convert可以顯式轉換資料型別,在某些情況下sql會根據實際情況自動轉換!不過建議顯式的轉換一下,這樣的話可讀性高一點!

因為字串不一定能轉換成數字,所以用上面的,加上錯誤處理比較。

例子:declare @a varchar(10)

set @a='as23'

select case when isnumeric(@a)=1 then cast(@a as int) else null end

set @a='23'

select case when isnumeric(@a)=1 then cast(@a as int) else null end

結果:declare @a varchar(10)

set @a='as23'

select case when isnumeric(@a)=1 then cast(@a as int) else null end

set @a='23'

select case when isnumeric(@a)=1 then cast(@a as int) else null end

6樓:海影幻

to_number()轉為數字格式

to_char()轉為字串格式

to_date()轉為時間格式

..........

轉為數字格式只有是數字的字串才能轉,這句話可能有點歧義, 通常字元前面帶0或點的數字字串轉數字用到,如000012轉為12,.55轉為0.55,若是個英文符號等字元轉了就報無效數字型別的錯,如果遇到兩種資料型別不一致情況資料庫預設是會轉的,如關聯 ta.

a=ba.b ta.a是字串,ba.

b是數字,或者將ta.a插入到ba.b資料庫就會自動轉

7樓:匿名使用者

int i = new integer("2");

8樓:匿名使用者

cast('111' as int) 不過首先你得判斷是不是 數字 isnumber('111')=1 是數字 =0 不是數字

oracle中如何用sql把字串轉換成整型

9樓:李乾銀

您可以使用cast函式將數字字串轉化為整型。

cast函式格式如下:

cast(欄位名 as int);

結構化查詢語言(structured query language)簡稱sql(發音:/ˈes kjuː ˈel/ "s-q-l"),是一種特殊目的的程式語言,是一種資料庫查詢和程式語言,用於訪問資料以及查詢、更新和管理關係資料庫系統;同時也是資料庫指令碼檔案的副檔名。

結構化查詢語言是高階的非過程化程式語言,允許使用者在高層資料結構上工作。它不要求使用者指定對資料的存放方法,也不需要使用者了解具體的資料存放方式,所以具有完全不同底層結構的不同資料庫系統, 可以使用相同的結構化查詢語言作為資料輸入與管理的介面。結構化查詢語言語句可以巢狀,這使它具有極大的靈活性和強大的功能。

1986年10月,美國國家標準協會對sql進行規範後,以此作為關係式資料庫管理系統的標準語言(ansi x3. 135-1986),1987年得到國際標準組織的支援下成為國際標準。不過各種通行的資料庫系統在其實踐過程中都對sql規範作了某些編改和擴充。

所以,實際上不同資料庫系統之間的sql不能完全相互通用。

10樓:匿名使用者

首先,字串必須是數字形式的字串,如「12345」或「-12345」等。

然後需要用to_number函式進行轉換。

如:select to_number('12345') from dual;

這樣就將字元轉成了數字,並可以參與加減乘除的運算。

這個你估計得自定義函式了,不能直接用to_number

建立函式

create or replace function isnumber(p in varchar2)

return number

istest number;

begin

test := to_number(p);

return test;

exception

when value_error then return 0;

end;

測試1,純數字

測試2 帶非數字的字元

測試3,負數

測試4 小數

測試5  0

總之就是測試5和測試2的結果是一樣,這個你看你打算怎麼解決吧

拓展資料

有沒有小數點?

如果有小數點的話

select trunc(to_number('1234,56897'),2) from dual

如果全是整的話,那麼就是

select to_number('1234,56897'),2) from dual

11樓:匿名使用者

使用cast(欄位名 as int)即可。

擴充套件延伸計算機中的乙個基本的專業術語。整型值可以用十進位制,十六進製制或八進位制符號指定,前面可以加上可選的符號(- 或者 +)。是一種智慧型的計算方式。

字串主要用於程式設計,概念說明、函式解釋、用法詳述見正文,這裡補充一點:字串在儲存上類似字元陣列,所以它每一位的單個元素都是可以提取的,如s=「abcdefghij」,則s[1]=「a」,s[10]="j",而字串的零位正是它的長度,如s[0]=10(※上述功能ansistring沒有。),這可以給我們提供很多方便,如高精度運算時每一位都可以轉化為數字存入陣列。

12樓:情又獨中

不用轉換,如果你裡面是全是數字,oracle在必要的時候(比如說往int欄位裡插入,或者與int欄位比較)會自動轉換

13樓:匿名使用者

to_number(『123』)

14樓:微加小開心

to_number('1234')

sybase資料庫中如何將char型別的資料轉換為數字型資料,寫乙個sql語句的例項? 10

15樓:匿名使用者

可以用convert()來轉換,如果版本較高的話也可以用cast()

如select convert(int,'123')

或select cast('123' as int)

16樓:匿名使用者

select cast('0' as int)

oracle中如何將varchar型轉換成int型

17樓:大野瘦子

這樣:select to_number('123') from dual

oracle沒有顯示的int型,你直接定義成number就好,強制型別轉換函式都差不多,轉換為日期型就是to_date(),

轉換為數字就是to_num(),轉換為字元就是to_char(),括號中跟需要轉換的內容,日期型注意格式掩碼。

注意事項

cast() 和convert() 函式可用來獲取乙個型別的值,並產生另乙個型別的值。

這個型別 可以是以下值其中的 乙個:

binary[(n)]

char[(n)]

date

datetime

decimal

signed [integer]

time

unsigned [integer]

所以也可以用cast解決問題:

select server_id from cardserver where game_id = 1 order by cast(server_id as signed) desc limit 10

也可以使用convert來搞定此問題:

select server_id from cardserver where game_id = 1 order by convert(server_id,signed) desc limit 10

18樓:佼祺祥

oracle轉成mysql時:varchar2(10)可以轉成varchar(10)number則要看oracle中儲存的具體是什麼型別的資料:1、如果是整型,那麼mysql中,用int即可;2、如果是帶小數字的,那麼mysql中可用numeric型別。

19樓:匿名使用者

1、先將varchar轉換為數字,再轉換為int型:

convert(int,convert(numeric(4,0),'1234'))

2、並不是所有varchar型都能轉換成int型,你得確認資料,使用trunc函式去掉小數點;

3、在資料錄入的時候,就判斷是否是整數,並且強制轉換如,int(price),也同樣可以避免日後 sql 比較時,轉換出錯。

20樓:匿名使用者

oracle沒有顯示的int型,你直接定義成number就好,強制型別轉換函式都差不多,轉換為日期型就是to_date(),

轉換為數字就是to_num(),轉換為字元就是to_char(),括號中跟需要轉換的內容,日期型注意格式掩碼。

sqlbit在sql語句中要怎麼判斷

sql的藝術 bit型別只有1和0兩個值 sql賦值 應該將它當做數字1和0 程式呼叫 顯示的卻是true和false 示例在sql語句中bit的判斷 示例表 table a 列 col1 型別為bit 1 where條件判斷 select from table a where col1 1 2 變...

sql語句連線查詢,資料庫的SQL語句中,巢狀查詢和連線查詢有什麼區別,說的詳細的

樓上的做法可能導致沒有記錄的無法顯示,建議使用left joinselect a.bh,a.name,sum b.score from a a left join b b on a.bh b.bhand year time 2011 group by a.bh,a.bname假設需要2011 年度的...

sql中count函式的使用,sql 語句中count函式怎麼用??

count 函式返回匹配指定條件的行數。sql count column name 語法 count column name 函式返回指定列的值的數目 null 不計入 select count column name from table name sql count 語法 count 函式返回表...

SQL語句怎麼插入到C語言語句中

1 建立乙個sql檔案。此檔案在isql中建立,檔案內容是所希望執行的sql語句。2 在wincc的c script中編寫程式呼叫此sql檔案,如以下程式所示 include apdefap.h void onlbuttondown char lpszpicturename,char lpszobj...

sql語句中時間轉換函式怎麼使用

ibatis還是很簡單的,hibernate是全自動,ibatis是半自動,自由度更大點,工作量也沒增加什麼,個人認為ibatis更好用,也更簡單,更方便。他也只要在配置檔案中寫sql語句,但。這個步驟總不能省的,所以我寧願用簡單易用的ibatis sql server 中怎麼把字串轉化為日期?建議...