sql轉換欄位類型
A. mssql已有數據,要將某項類型從text轉換成varchar,sql應該怎麼寫
sql資料庫不允許對Text類型的欄位經常轉換
不過我們通常用這個方法來解決類似問題,希望對你有幫助
--假設有表A(ID int ,Addr text)
--首先添加一個欄位
alter table A add addr1 varchar(20)
--將原來text類型的欄位內容拷貝過來
update A set Addr1=addr
--去除原表裡的Text類型欄位
alter table a drop column addr
--這樣以後凡是用到Addr 欄位的地方用Addr1代替就行了
--當然你可以再添加一個varchar(20)型的欄位Addr
alter table A add addr1 varchar(20)
--然後把欄位內容拷貝回
update A set Addr=addr1
alter table a drop column addr1
--這樣就會和原來一樣使用了
--希望對你有幫助
B. SQL怎麼樣把numeric類型的數據轉換為varchar類型的數據
可以用cast來轉換。
如:列名叫grade,表名為A select cast(grade as numeric(y,x)) from A 其中y代表數據長度,x代表小數位長度。
注意:grade中必須全為數字或小數點,如果存在中文或英文,則運行時會報錯。
使用CAST函數進行數據類型轉換時,在下列情況下能夠被接受:
(1)兩個表達式的數據類型完全相同。
(2)兩個表達式可隱性轉換。
(3)必須顯式轉換數據類型。
(2)sql轉換欄位類型擴展閱讀
SQL中類型轉換函數:
1、cast
cast(表達式 as 數據類型)
select 100.0 +cast('1000' as int) -- 1100.0 默認把字元串轉換成浮整形。
2、convert
convert(數據類型,表達式)
select 100.0 + convert(int,'1000')-- 1100.0 默認把字元串轉換成整形。
3、select * from student order by convert (int,bid) desc --bid列按照降序來排列,bid是varchar類型。
4、print convert(varchar(10),getdate(),120) --日期轉換varchar(10)表示顯示的字元長度,120表示style,可以在SSMS 幫助中查看詳情。
5、cast不可以轉換日期類型,convert可以通用。
C. sql 修改欄位類型
alter table 表名 alter column 欄位名 type not null。
1、修改欄位名:
alter table 表名 rename column A to B。
2、修改欄位默認值:
alter table 表名 add default (0) for 欄位名 with values,如果欄位有默認值,則需要先刪除欄位的約束,在添加新的默認值。
3、增加欄位:
alter table 表名 add 欄位名 type not null default 0 。
5、刪除欄位:
alter table 表名drop column 欄位名。
(3)sql轉換欄位類型擴展閱讀:
alter其他用法
1.重命名表
ALTER TABLE 【表名字】 RENAME 【表新名字】
2.刪除表中主鍵
Alter TABLE 【表名字】 drop primary key
3.添加主鍵
ALTER TABLE sj_resource_charges ADD CONSTRAINT PK_SJ_RESOURCE_CHARGES PRIMARY KEY (resid,resfromid)
4.添加索引
ALTER TABLEsj_resource_charges add index INDEX_NAME (name);
5.添加唯一限制條件索引
ALTER TABLE sj_resource_charges add unique emp_name2(cardnumber);
6.刪除索引
alter table tablename drop index emp_name;
7.聯合唯一索引
ALTER TABLE tablenameADD UNIQUE INDEX INDEX_NAME(school_id, settlement_time);
alterignoretable tablenameadniqueindex(user_id,user_name)
D. 在sql server2000中,如何把整型欄位轉換成字元串型欄位
使用函數STR()
STR
由數字數據轉換來的字元數據。
語法
STR ( float_expression [ , length [ , decimal ] ] )
參數
float_expression
是帶小數點的近似數字 (float) 數據類型的表達式。不要在 STR 函數中將函數或子查詢用作 float_expression。
length
是總長度,包括小數點、符號、數字或空格。默認值為 10。
decimal
是小數點右邊的位數。
返回類型
char
注釋
如果為 STR 提供 length 和 decimal 參數值,則這些值應該是正數。在默認情況下或者小數參數為 0 時,數字四捨五入為整數。指定長度應該大於或等於小數點前面的數字加上數字元號(若有)的長度。短的 float_expression 在指定長度內右對齊,長的 float_expression 則截斷為指定的小數位數。例如,STR(12,10) 輸出的結果是 12,在結果集內右對齊。而 STR(1223, 2) 則將結果集截斷為 **。可以嵌套字元串函數。
說明 若要轉換為 Unicode 數據,請在 CONVERT 或 CAST 轉換函數內使用 STR。
示例
A. 使用 STR
下例將包含五個數字和一個小數點的表達式轉換為有六個位置的字元串。數字的小數部分四捨五入為一個小數位。
SELECT STR(123.45, 6, 1)
GO
下面是結果集:
------
123.5
(1 row(s) affected)
當表達式超出指定長度時,字元串為指定長度返回 **。
SELECT STR(123.45, 2, 2)
GO
下面是結果集:
--
**
(1 row(s) affected)
即使數字數據嵌套在 STR內,結果集也是帶指定格式的字元數據。
SELECT STR (FLOOR (123.45), 8, 3)
GO
下面是結果集:
--------
123.000
(1 row(s) affected)
E. SQL如何用語句更改欄位的數據類型
SQL如何用語句更改欄位可以用以下語句可以實現:
altertable表名altercolumn欄位名變更後的欄位類型。
注意:
但若是關鍵欄位,帶有主鍵,並且欄位類型為用戶自定義類型,具有默認值的情況下,用上述語句會出現錯誤。
例如:
現假設表為TABLE1,關鍵欄位為FIELD1,主鍵為PK_FIELD1,關鍵欄位的數據類型為用戶自定義數據類型cha_field1,實際為CHAR(10),默認值為dbo.D_field1現要求將欄位類型改為varchar(20),默認值去除錯誤提示如下:
伺服器:消息5074,級別16,狀態1,行1
對象'D_field1'依賴於列'field1'。
伺服器:消息5074,級別16,狀態1,行1
對象'PK_field1'依賴於列'field1'。
伺服器:消息4922,級別16,狀態1,行1
ALTERTABLEALTERCOLUMNfield1失敗,因為有一個或多個對象訪問此列。
F. sql語句中數據類型轉換怎麼寫
如下:
表一trxorder 欄位id(bigint),status,requestid(varchar)
表二payment 欄位id(bigint),authstatus,trxorder_id(bigint)(trxorder_id是參考trxorder表的id的外鍵)
表三manual 欄位status, eventkey(varchar)(eventkey是參考payment表的id的外鍵)!
G. 如何用SQL語句將表格中的tn欄位的數據類型修改為char(8)
alter table change column tn char(8);這樣就可以修改欄位類型了,還可以設置欄位是否為空,是否有默認值,以及欄位注釋。
H. SQL語句如何修改主鍵欄位的欄位類型類型
首先,修改主鍵欄位的欄位類型,肯定是要先刪除主鍵才能操作的
--【1.查找主鍵】
--SQLSERVER
select name as pkName from dbo.sysobjects where xtype='PK' and parent_obj=(select id from dbo.sysobjects where name='表名')
--ORACLE
SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = UPPER('表名') AND CONSTRAINT_TYPE ='P'
--【2.刪除主鍵約束】
ALTER TABLE 表名 DROP CONSTRAINT 約束名
--ORACLE
--刪除主鍵連同索引
ALTER TABLE 表名 DROP CONSTRAINT 約束名 CASCADE DROP INDEX;
或者
ALTER TABLE 表名 DROP PRIMARY KEY CASCADE DROP INDEX;--【3.修改欄位】
--【先把這一列的值備份到臨時列里,再把這一列update成null,再修改類型,再把數據拷貝回來】
--SQLSERVER
--默認值單獨處理,關聯約束
--默認值的變更涉及到約束,如有約束,需要先查詢出越是再進行刪除
ALTER TABLE 表名 DROP CONSTRAINT 約束名
ALTER TABLE 表名 ALTER COLUMN 欄位名 欄位類型(長度精度) 是否為空
ALTER TABLE 表名 ADD CONSTRAINT 約束名 DEFAULT 默認值 FOR 欄位名
--ORACLE
--刪除默認值:default null
ALTER TABLE 表名 MODIFY COLUMN 欄位名 VARCHAR2(20) DEFAULT ' ' NOT NULL--【4.新增主鍵】
--指定主鍵名字
ALTER TABLE 表名 ADD CONSTRAINT 主鍵名 PRIMARY KEY (F1,F2);
--未指定主鍵名字
ALTER TABLE 表名 ADD PRIMARY KEY (F1,F2)