sqlserver轉換數據類型
Ⅰ sqlserver 怎麼更改表欄位的數據類型
使用alter語法可以修改,但是需要注意,如果列中存在不可轉換到目標類型的數據,alter會失敗。
Ⅱ sqlserver關於數據類型轉換的問題
價格用Money類型啊,干嗎要那麼麻煩
就算你不用Money,你也可以直接定義為int 或者Double
sql中數據類型轉換
CAST 和 CONVERT
將某種數據類型的表達式顯式轉換為另一種數據類型。CAST 和 CONVERT 提供相似的功能。
語法
使用 CAST:
CAST ( expression AS data_type )
使用 CONVERT:
CONVERT (data_type[(length)], expression [, style])
例子:
CONVERT(char(20), ytd_sales)
CAST(ytd_sales AS char(20))
Ⅲ sqlserver怎麼改變數據類型
--先保證所有列為整型
update 你的表 set 你的列=null where isnumeric(你的列)=0 or charindex('.',你的列)>0
--直接更新為整型
alter table 你的表 alter column 你的列 int;
Ⅳ SqlServer函數的類型轉換函數
convert (數據類型[(長度)],表達式[,樣式])
將一種數據類型的表達式顯式轉換為另一種數據類型的表達式;
長度:如果數據類型允許設置長度,可以設置長度,例如 varchar(10);
樣式:用於將日期類型數據轉換為字元數據類型的日期格式的樣式。
詳細可以參照安安DIY創作室的一篇文章:《sqlserver datetime轉換成帶格式的字元串》
cast (表達式 AS 數據類型[(長度)])
將一種數據類型的表達式顯式轉換為另一種數據類型的表達式。
例如:select cast(123 as nvarchar) 返回123
select N'年齡:' + cast(23 as nvarchar) 返回 年齡:23
Ⅳ 如何在sql server存儲過程中轉化數據類型
不一定非要在存儲過程中轉換,用普通的sql語句就可以,一般用cast函數。
測試方法:
創建表及插入數據:
createtabletest
(idint,
starttimevarchar(20));
insertintotestvalues(1,'2015-07-11');
將starttime欄位轉化為datetime類型:
selectcast(starttimeasdatetime)fromtest;
結果如圖,這時,starttime就轉成了datetime類型:
Ⅵ SQLSERVER數據轉換問題
insert into 目的表(日期欄位)
select convert(datetime,substring(日期欄位,1,4)+'-'+substring(日期欄位,5,2)+'-'+substring(日期欄位,7,2))
from 來源表
其它的欄位和條件自己加
Ⅶ SQLServer資料庫中將日期格式進行轉換急急急
1.首先點擊頂部菜單中的「新查詢」,打開一個SQL輸入窗口。
Ⅷ sqlserver中如何把字元串轉換成數字
SQL Server中的數值類型分為兩種,一種是精確的數值類型,具體的數據類型有:bit、tinyint、smallint、int、bigint、smallmoney、money和decimal,這些數據類型能夠精確的表明某以數值;另一種是近似的數值類型,具體就是float和real。浮點數據為近似值,因此,並非數據類型範圍內的所有值都能精確地表示。
有些時候我們需要將這些數值類型轉換為字元串類型,用到的轉換函數就是cast和convert,這兩個函數的作用都是進行類型轉換,只不過語法格式不同。據說在轉換時還是有一定的區別的,不過我個人更習慣於使用convert函數,應該這個函數一方面更像是個函數的語法,另一方面在做時間和數值轉換成字元串時還可以指定轉換的格式。
對於精確數值的數據類型,轉換出來的字元串就是我們存儲的數值。比如:
declare @i intset @i=123456789
print 'test:'+convert(varchar(20),@i)
輸出就是:test:123456789
而如果對於近似數值的數據類型,那麼可就沒有那麼簡單了。
declare @i floatset @i=123456789
print 'test:'+convert(varchar(20),@i)
輸出結果:test:1.23457e+008
輸出的結果是使用科學計數法來表示的,再看看可否通過指定轉換樣式來指定不使用科學計數法呢?幫助文檔中說到float 或 real 轉換為字元數據時的 style 值:
0(默認值)最大為 6 位數。根據需要使用科學記數法。
1 始終為 8 位值。始終使用科學記數法。
2 始終為 16 位值。始終使用科學記數法。
我們的值是123456789,超過了6位數.所以不管是0還是1,2結果都會使用科學計數法來表示。那麼要怎麼樣才能將我們的數據不轉換成科學計數法而輸出呢?比較簡單的辦法就是將近似數據轉換為精確數據,然後再將精確數據轉換成字元串。
同樣以上面的例子為例, 進行兩次數據類型的轉換如下:
declare @i floatset @i=123456789
print 'test:'+convert(varchar(20),convert(int,@i))
輸出:test:123456789如果是有小數,那麼我們要轉換出小數位的話,可以轉換成decimal,轉換出的小數位數在定義decimal時指定。比如要輸出4位小數,那麼轉換代碼是:
declare @i floatset @i=123456789.12
print 'test:'+convert(varchar(20),convert(decimal(18,4),@i))
輸出:test:123456789.1200
Ⅸ 資料庫中轉換數據類型的幾種方法
oracle有三種最基本的數據類型,即字元型、數值型、日期型。 (注意需要起別名的地方要起別名)
oracle提供的單行函數中,針對不同的數據類型,提供大量實用的函數,同時提供一系列數據類型轉換函數,如下:
sql.append(" select CURVE_NAME,S_YEAR_LIMIT,AVERAGE_VALUE,to_char(d_date,'yyyy-MM-dd') d_date from t_treasury_yield_curve t where d_date = to_date ('"+d_date+"','yyyy-MM-dd')");
24 小時的形式顯示出來要用 HH24select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from al;
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from al;to_date() function。
1、日期格式參數 含義說明
D 一周中的星期幾。
DAY 天的名字,使用空格填充到 9 個字元。DD 月中的第幾天,DDD 年中的第幾天。
DY 天的簡寫名,IW ISO 標準的年中的第幾周,IYYY ISO 標準的四位年份。YYYY 四位年份,
YYY,YY,Y 年份的最後三位,兩位,一位。
select sysdate,sysdate - interval '7' month from al。
當前時間減去 7 年的時間。
select sysdate,sysdate - interval '7' year from al。
時間間隔乘以一個數字。
select sysdate,sysdate - 8 *interval '2' hour from al
2、日期到字元操作
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from al,select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from al,select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from al。
select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from al。
3、字元到日期操作
select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from al。
具體用法和上面的 to_char 差不多。
4、TO_NUMBER
使用TO_NUMBER函數將字元轉換為數字
TO_NUMBER(char[, '格式'])
數字格式格式:
9 代表一個數字 。
0 強制顯示0 。
$ 放置一個$符 。
L 放置一個浮動本地貨幣符 。
. 顯示小數點 。
, 顯示千位指示符。
(9)sqlserver轉換數據類型擴展閱讀:
在使用數據類型轉換之前,同樣的 SQL 在有的伺服器不報錯,主要是資料庫的版本不同,當然該過配置的不算。
常見的兩種類型轉換錯誤如下:
ERROR: operator does not exist: integer = character varying。
ERROR: operator does not exist: character varying = integer。
字元串轉數字,數字轉字元串。這一點支持的不如 MySQL 好,當然 PostgreSQL 在新版本中也對這個問題做了改進!
第一種轉換方式:使用 CAST 函數。
SELECT * FROM xttblog WHERE id = CAST(888 AS VARCHAR);
SELECT * FROM xttblog WHERE id = CAST('888' AS integer)。
第二種轉換方式:使用「::」操作欄位。
格式,欄位 :: 要轉換為的數據類型。
SELECT * FROM xttblog WHERE id = 888 :: VARCHAR;
SELECT * FROM xttblog WHERE id = '888' :: integer。
數據類型轉換,雖然看起來很痛苦,但是如果用戶的類型用的不對,查詢效率會下降。所以,在設計的時候,欄位的類型,一定要設計的合理,尤其是在關聯表的時候。
Ⅹ sqlserver中怎麼把varchar類型轉換成numeric類型,如下句子
代碼問題:」100.1%」這種帶有非數字的字元是不可以轉換成numeric的。
改正方法:你可以將數字除以100,變為「1.001」再轉換成numeric。 set @lastbl1 =「1.001」 set @lastbl2 = CAST( @lastbl1 AS numeric(10,2))
(10)sqlserver轉換數據類型擴展閱讀:
1.SQL Server中可以使用cast和convert函數進行數據類型的轉換。
如:set @lastbl2= CAST( @lastbl1 AS numeric(10,2))
或 set @lastbl2= CONVERT(numeric(10,2),@lastbl1 )
2.cast與convert的不同:convert多用於關於日期時間的轉換;cast一般用於小數數值和字元型。
如:select CONVERT(varchar(12) , getdate(),111 ) -- 2017/08/13