當前位置:首頁 » 編程語言 » sql需要明確轉換類型
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql需要明確轉換類型

發布時間: 2023-03-30 23:10:20

㈠ 求sql常用數據類型轉換函數

sql中用convert這個函數進行數據類型轉換
1.CONVERT()
函數可以用不同的格式顯示日期/時間數據。
CONVERT(data_type(length),data_to_be_converted,style)
style:
100
或者
0
mon
dd
yyyy
hh:miAM
(或者
PM)
101
mm/dd/yy
102
yy.mm.dd
103
dd/mm/yy
104
dd.mm.yy
105
dd-mm-yy
106
dd
mon
yy
107
Mon
dd,
yy
108
hh:mm:ss
109
或侍槐者
9
mon
dd
yyyy
hh:mi:ss:mmmAM(或者
PM)
110
mm-dd-yy
111
yy/mm/dd
112
yymmdd
113
或者虛螞
13
dd
mon
yyyy
hh:mm:ss:mmm(24h)
114
hh:mi:ss:mmm(24h)
120
或者
20
yyyy-mm-dd
hh:mi:ss(24h)
121
或者
21
yyyy-mm-dd
hh:mi:ss.mmm(24h)
126
yyyy-mm-ddThh:mm:ss.mmm(沒有空格)
130
dd
mon
yyyy
hh:mi:ss:mmmAM
131
dd/mm/yy
hh:mi:ss:mmmAM
例子:CONVERT(VARCHAR(10),GETDATE(),110)
2.CONVERT()
函數是把數據類型間的轉換
例子:select
CONVERT(int,'老譽友10')

㈡ SQL語句類型轉換問題

你只在where條件中使用了類型轉換,應該是
select
a,cast(b
as
int)
into
#M
from
S
就可以了

㈢ 如何在sql server存儲過程中轉化數據類型

不一定非要在存儲過程中轉換,用普通的sql語句就可以,一般用cast函數。

測試方法:

創建表及插入數據:

create知答tabletest
(idint,
starttimevarchar(20));

insertintotestvalues(1,'2015-07-11');

將starttime欄位轉化為datetime類型:

selectcast(starttimeasdatetime)fromtest;

結果如圖燃辯,這皮猛缺時,starttime就轉成了datetime類型:

㈣ SQL語句類型轉換問題

你的b列裡面是不是類似'123' 之類的數據,也就是說全部以數字形式出現的字元類型,才可以轉化int。有可能是這個原因。

㈤ SQL數據類型轉換

datetime類型轉varchar型
convert(varchar(23),mapdate,120)

㈥ sql語句會自動轉換類型嗎

會。在處理不同數轎帆據類型的值時,SQLServer會自動進行前舉隱士類型轉換。對於數據類型相近的值是有效的,比如int和float,但是對於其它數據類型,例如整型和字元類型,隱士轉換就無法實現了,此時必須使用顯示轉換。為了實現這種顯示轉換,T-SQL提供了兩個顯示轉換慧帆碧函數,分別是CAST和CONVERT函數。

㈦ 關於sql 數據類型轉換的問題

//第信激一步,把value小於1的找出來,轉換好銷成value*100重新插入
insert into table(id,id2,value)
select id,id2,cast(cast(value as Long)*100 as Integer) as value
where cast(valueas as Integer)<1;
//第二步,將ID有重復的項,value小於1的刪除
delete from table
where id in(
select t.id from (
select id,count(id) as cid from table
) t where t.cid>1
)
and cast(valueas as Integer)<1;

你最好找個臨時的資料庫友坦游先運行一下看效果,別弄出問題了找我~

㈧ SQL的數據類型

【三】SQL的數據類型(表的欄位類型)

3.1 四種基本的常用數據類型(表的欄位類型)

1、字元型,2、數值型,3、日期型,4、大對象型

3.1.1 字元型:

字元類型char和varchar2的區別

SCOTT@ prod> create table t1(c1 char(10),c2 varchar2(10));

SCOTT@ prod> insert into t1 values('a','ab');

SCOTT@ prod> select length(c1),length(c2) from t1; char和varchar2默認以byte為計算單位

LENGTH(C1) LENGTH(C2)

---------- ----------

10 2

3.1.2 數值型:

3.1.3 日期型:

系統安裝後,默認日期格式是DD-MON-RR, RR和YY都是表示兩位年份,但RR是有世紀認知的,它將指定日期的年份和當前年份比較後確定年份是上個世紀還是本世紀(如表)。

當前年份 指定日期 RR格式 YY格式

------------------------------------------------------------------------------

1995 27-OCT-95 1995 1995

1995 27-OCT-17 2017 1917

2001 27-OCT-17 2017 2017

2013 27-OCT-95 1995 2095

3.1.4 LOB型:

大對象是10g 引入的,在11g中又重新定義,在一個表的欄位里存儲大容量數據,所有大對象最大都可能達到4G。CLOB,NCLOB,BLOB都是內部的LOB類型,沒有LONG只能有一列的限制。

保存圖片或電影使用BLOB最好、如果是小說則使用CLOB最好。雖然LONG、RAW也可以使用,但LONG是oracle將要廢棄的類型,因此建議用LOB。

雖說將要廢棄,但還沒有完全廢棄,比如oracle 11g里的一些視圖如dba_views,對於text(視圖定義)仍然沿用了LONG類型。

Oracle 11g重新設計了大對象,推出SecureFile Lobs的概念,相關的參數是db_securefile,採用SecureFile Lobs的前提條件是11g以上版本,ASSM管理等,符合這些條件的。BasicFile Lobs也可以轉換成SecureFile Lobs。較之過去的BasicFile Lobs, SecureFile Lobs有幾項改進:

1)壓縮,2)去重,3)加密。

當create table定義LOB列時,也可以使用LOB_storage_clause指定SecureFile Lobs或BasicFile Lobs,而LOB的數據操作則使用Oracle提供的DBMS_LOB包,通過編寫PL/SQL塊完成LOB數據的管理。

3.2 數據類型的轉換

3.2.1 轉換的需求

什麼情況下需要數據類型轉換

1)如果表中的某欄位是日期型的,而日期又是可以進行比較和運算的,這時通常要保證參與比較和運算的數據類型都是日期型。

2)當對函數的參數進行抽(截)取、拼接,或運算等操作時,需要轉換為那個函數的參數要求的數據類型。

3)製表輸出有格式需求的,可將date類型,或number類型轉換為char類型

4)轉換成功是有條件的,有隱性轉換和顯性轉換兩種方式

3.2.2隱性類型轉換:

是指oracle自動完成的類型轉換。在一些帶有明顯意圖的字面值上,可以由Oracle自主判斷進行數據類型的轉換。

一般規律:

①比較、運算或連接時:

SQL> select empno,ename from emp where empno='7788'

empno本來是數值類型的,這里字元'7788'隱性轉換成數值7788

SQL> SELECT '12.5'+11 FROM al;

將字元型『12.5』運轉成數字型再求和

SQL> SELECT 10+('12.5'||11) FROM al;

將數字型11隱轉成字元與『12.5』合並,其結果再隱轉數字型與10求和

②調用函數時

SQL> select length(sysdate) from al;

將date型運轉成字元型後計算長度

③向表中插入數據時

create table scott. t1 (id int,name char(10),birth date);

insert into scott.t1 values('123',456,'2017-07-15');

按照欄位的類型進行隱式轉換

3.2.3 顯性類型轉換

即強制完成類型轉換(推薦),有三種形式的數據類型轉換函數:

TO_CHAR

TO_DATE

TO_NUMBER

1)日期-->字元

SQL> select ename,hiredate, to_char(hiredate, 'DD-MON-YY') month_hired from emp

where ename='SCOTT';

ENAME HIREDATE MONTH_HIRED

---------- ------------------- --------------

SCOTT 1987-04-19 00:00:00 19-4月 -87

fm壓縮空格或左邊的'0'

SQL> select ename, hiredate, to_char(hiredate, 'fmyyyy-mm-dd') month_hired from emp

where ename='SCOTT';

ENAME HIREDATE MONTH_HIRED

---------- ------------------- ------------

SCOTT 1987-04-19 00:00:00 1987-4 19

其實DD-MM-YY是比較糟糕的一種格式,因為當日期中天數小於12時,DD-MM-YY和MM-DD-YY容易造成混亂。

以下用法也很常見:

SQL> select to_char(hiredate,'yyyy') FROM emp;

SQL> select to_char(hiredate,'mm') FROM emp;

SQL> select to_char(hiredate,'dd') FROM emp;

SQL> select to_char(hiredate,'DAY') FROM emp;

2)數字-->字元:9表示數字,L本地化貨幣字元

SQL> select ename, to_char(sal, 'L99,999.99') Salary from emp where ename='SCOTT';

ENAME SALARY

---------- --------------------

SCOTT 3,000.00

以下四個語句都是一個結果:

SQL> select to_char(1890.55,'$99,999.99') from al;

SQL> select to_char(1890.55,'$0G000D00') from al;

SQL> select to_char(1890.55,'$99G999D99') from al;

SQL> select to_char(1890.55,'$99G999D00') from al; 9和0可用,其他數字不行

3)字元-->日期

SQL> select to_date('1983-11-12', 'YYYY-MM-DD') tmp_DATE from al;

4)字元-->數字:

SQL> SELECT to_number('$123.45','$9999.99') result FROM al;

使用to_number時如果使用較短的格式掩碼轉換數字,就會返回錯誤。不要混淆to_number和to_char轉換。

SQL> select to_number('123.56','999.9') from al;

報錯:ORA-01722: 無效數字

練習:建立t1表,包括出生日期,以不同的日期描述方法插入數據,顯示小於15歲的都是誰

SQL> create table t1 (id int,name char(10),birth date);

insert into t1 values(1,'tim',sysdate);

insert into t1 values(2,'brian',sysdate-365*20);

insert into t1 values(3,'mike',to_date('1998-05-11','yyyy-mm-dd'));

這一句也可以寫成insert into t1 values(3,'mike',to_date('1998-05-11')),因為'1998-05-11'是和當前日期格式匹配的。

insert into t1 values(4,'nelson',to_date('15-2月-12','dd-mon-rr'));

SQL> select * from t1;

ID NAME BIRTH

---------- ---------- -------------------

1 tim 2016-02-25 17:34:00

2brian 1996-03-01 17:34:22

3 mike 1998-05-11 00:00:00

4 nelson 2012-02-15 00:00:00

SQL> select name||'的年齡是'||to_char(months_between(sysdate,birth)/12,99) age from t1

where months_between(sysdate,birth)/12<15;

AGE

-------------------------

tim 的年齡是 0

nelson 的年齡是 4

the end !!!

@jackman 共築美好!

㈨ sql轉換類型問題

要分兩步走:
首先,把datetime型轉換成varchar型;
然後,把字元串中的"-"號,":"號,以及空格去掉.

參考如下示例:
declare @date datetime
set @date='2007-02-25 01:02:00'
select replace(replace(replace(convert(varchar(30),@date,120),'-',''),':',''),' ','')

補充,數據類型轉換函數可以將datetime型的一步轉換為字元串型,但得不到你要的那種格式,頂多也就只能一步轉換成'2007-02-25 01:02:00'的字元串樣式,當然也可以轉換成其他的排列樣式,但只有這個樣式離你的要求最相近,所以,要最終得到你那種樣式,就必須還要經過一次字元串的替換操作.

replace(replace(replace(convert(varchar(30),@date,120),'-',''),':',''),' ','')
這個函數組合已經很精煉了,你完全可以把它當作一個獨立的函數使用

㈩ 在SQL語句里怎麼轉換數據類型

ALTER TABLE 表名 ALTER COLUMN 列名 新的數據類型[(長度)] NULL或NOT NULL
例:ALTER TABLE 教師 ALTER COLUMN 辦公室 CHAR(20) NOT NULL default "辦公室"

把寫好的句子放到執行其他sql語句的地方比如EXEcute(sql)這樣的地方,執行一次就行,然後改回來。