oraclesql字串轉數字問題

時間 2022-02-09 09:20:17

1樓:海天盛

1.將字串型別轉換為數字型別。此方法使用tonumber()直接轉換。具體語法是tonumber(str)。

2.將數字型別轉換為字串型別。此轉換使用to_char(),這有點像上面的to_number()模式。999代表相同的內容。

3.將日期型別轉換為字串型別。實際上,此方法還使用到ˊchar(),它將日期格式轉換為所需的格式型別。這種方法更加個性化。

4.下面的**將日期型別轉換為公共字串型別,這是一種更常見、更完整的字串格式。

5.將字串型別轉換為日期型別。此轉換方法使用to_date()。用法也相對簡單,轉換後的日期格式也是自定義的。

6.完成效果圖。

2樓:匿名使用者

這個你估計得自定義函式了,不能直接用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的結果是一樣,這個你看你打算怎麼解決吧

3樓:匿名使用者

自己寫一個函式 判斷一下輸入字元中 是否有數字外的字元 如果有 直接 返回0 ,否則返回數字

而後用到sql中

oracle資料庫裡面的字串轉成數字型別,

4樓:匿名使用者

to_number(s.status_name,'999999').to_number(s.status_name,'999999.99')

.to_number(s.status_name,'$999999.99')

to_number(),to_date(),to_char()都是有兩個引數的,你沒用對而已

5樓:匿名使用者

建議你優化一下你的sql,你完全可以不用子查詢將那4個表都掃描兩遍(等到你數量巨大,效率會很低,你要在開發階段避免這種情況的發生),你看一下oracle的lag()和lead()統計函式,它可以在一次查詢中取出同一欄位的前n行的資料和後n行的值

你的s.status_name欄位裡是不是字元和數字都有啊,你貼一下,看看有什麼規律

給你個例子

create table a (id number,name varchar2(10));

insert into a values (1,'aa');

insert into a values (2,'bb');

insert into a values (3,'cc');

cimmit;

取當前行的前一行資料

select id,name,lag(id,1)over(order by id),lag(name,1)over(order by id) from a where id in (2,3);

取當前行的後一行資料

select id,name,lead(id,1)over(order by id),lead(name,1)over(order by id) from a where id in (2,3);

這個a表的id不就相當於你的l.location_id嗎?

6樓:

to_number(s.status_name)

改成這樣就可以了

7樓:匿名使用者

用decode函式。

或者用 case when 語句?

sql 中怎樣將string型別的「1」轉換成int型別的「1」用於加減法?

8樓:在太平湖釣魚的金雀花

資料庫中的字元型資料值是用單引號引起來的,如果不用單引號引起來的數字就會被認為是數字型,舉個sqlserver 的例子,比如:

select '1'+'1';--這個會輸出的是11select 1+1;--這樣的話輸出的就是2如果是字元型轉換數字型的話也可以,就要函式處理,比如:

select convert(int,'1')+convert(int,'1');--這樣輸出的話就是2,因為函式將字元型已經轉成了int型

9樓:匿名使用者

oracle

select to_number('1') + 1 from dual;

t-sql

select cast('1'as int)

10樓:

cast(1 as int)

oracle判斷字串是否為數字

11樓:韓福潔

用正規表示式:

oracle查出列為純數字的值:

select* from dual where length('lss12345') = length(regexp_replace('lss12345', '[^0-9]'))

12樓:匿名使用者

可以使用正規表示式的方式來判斷。

regexp_like( 欄位 , '(^[+-]?\d\.?\d$)'

來判斷 是否是數字

sql> select null

2  from dual

3  where regexp_like(null,'(^[+-]?\d\.?\d$)');

未選定行

sql>

sql> select 'abc'

2  from dual

3  where regexp_like('abc','(^[+-]?\d\.?\d$)');

未選定行

sql>

sql> select '100'

2  from dual

3  where regexp_like('100','(^[+-]?\d\.?\d$)');

'10---

100sql>

sql> select '-100'

2  from dual

3  where regexp_like('-100','(^[+-]?\d\.?\d$)');

'-10

----

-100

sql>

sql> select '.01'

2  from dual

3  where regexp_like('.01','(^[+-]?\d\.?\d$)');

'.0---

.01sql>

sql> select '1995-10-1'

2  from dual

3  where regexp_like('1995-10-1','(^[+-]?\d\.?\d$)');

未選定行

sql>

sql> select '1/20/95'

2  from dual

3  where regexp_like('1/20/95','(^[+-]?\d\.?\d$)');

未選定行

sql 語句 ,怎麼將字元型轉換為數字型(整型,浮點型)都行,用什麼函式 **等

13樓:

你可以試試convert函式 ,例如:

convert(int, 欄位) //前一個引數為目標型別,後一個為欄位名

如果想轉換成浮點型/日期 等,可以通過第三個引數來控制格式

14樓:匿名使用者

應該是在建立表的時候就決定了吧

alter() 也可以修改指定的欄位

asp 符串轉數字格式,ASP 字串轉數字格式

cint 或者clng 你這個應該用clng 這個是vbscript的寫法。 asp 函式大全 用cint 或clng dim dr dr 2123123 dr1 cint dr dr2 clng dr 可參考如下函式說明 cint 函式 描述返回表示式,此表示式已被轉換為 integer 子型別的...

輸入字串,內有數字和非數字字元

include using namespace std int main else if j 0 pa digit ndigit pa j 0 else i printf 共有 d 個連續的整數 n ndigit j 0 pa a 0 for j 0 j cout return 0 給出一段c c ...

python判斷字串是否為數字

z伊凡 正則匹配法比較嚴謹一些,你說的數字有沒有條件限制?下面是一些常用的判斷各種數字的正規表示式 驗證數字 0 9 驗證n位的數字 d 驗證至少n位數字 d 驗證m n位的數字 d 驗證零和非零開頭的數字 0 1 9 0 9 驗證有兩位小數的正實數 0 9 0 9 驗證有1 3位小數的正實數 0 ...