當前位置:首頁 » 數據倉庫 » 資料庫文本欄位大小改為5
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫文本欄位大小改為5

發布時間: 2023-05-25 19:17:51

A. 資料庫欄位補'0'

寫個函數:
CREATE Function xfn_UpdateZero(@Str VARCHAR(20),@Len INT)
RETURNS VARCHAR(20)
AS
BEGIN
DECLARE @ALEN INT
SET @ALEN=0
WHILE @ALEN<@Len-1
BEGIN
SET @Str='0'+@Str
SET @ALEN=@ALEN+1
END
RETURN @Str
END

然後更新欄位值:
update table_name set 欄位名=dbo.xfn_UpdateZero(欄位名,5)
這樣這個欄位的所有數據長度都變成了5
(PS:前提是這個欄位中不可以有值的長度大於五位,否則這個值不會更新)

B. 資料庫中的一個欄位的數據大小不定如何設置欄位的長度查詢最快又節省空間

varchar是可變字元,varchar(2000)即可,不會浪費空間。
樓主為何要將歷史記錄存在access中呢?若您後台有sql server支持,建議您歷史記錄也存放在sql中,access的性能及對sql的語言支持都遠不如 MSSQL。

【VARCHAR限制了字元串的長度不能超過255個字元?】---哦,忘記了,這個可能access有此限制,sql可以的,最大varchar(8000)。
varchar(100)中的100並不多餘,在未存儲數據時用於佔位,系統會用於預先計劃分配空間,但直到真正存儲數據時才確實分配存儲空間。

個人看法:
1.佔用空間上varchar(100)和varchar(2000)沒什麼區別。
2.但varchar(100)會效率較低,因為按你說的該欄位會5-2000,若大於100,則您每次固定寫入100會需要多次寫操作,眾所周知寫操作是比較耗時的。
3.查詢性能方面,跟您這兒怎麼存沒太大關系,重要的還是常見的資料庫查詢優化,如索引、條件等等

對這個問題,我引用一下CSDN上的說法:

一。數據行結構
char(n): 系統分配n個位元組給此欄位,不管欄位實際長度(後邊用空格補齊)

varchar(n): 假設表中有M個varchar(或者nvarchar)類型的欄位
先分配兩個位元組(用來表示M)
再分配2*M個位元組(表示各變長行的偏移)
此後欄位值有多長,就分配多長

二。varchar(n)一定比char(n)節省空間么?
不一定。
我見過這樣的設計: varchar(3)
就算此欄位為空,也還是比char(3)多用一個位元組。

還有這樣的設計: user_ip varchar(16).
對於這種數據長度變化不大的欄位,用varchar只能浪費空間

結論: varchar適用於數據值長度不太短,且長度變化較大的欄位

三。char(n)一定比varchar(n)速度快么?
不一定
計算varchar的偏移是會花去一些cpu時間,但性能瓶頸不在此,在io.
db的io單位是數據頁(8192位元組)(一頁存有多個數據行,數據行不能跨頁。當然image,text等例外). 因此一頁中行越多,性能越好

另外,關於char和varchar的性能比較,

請參見該實驗:
http://www.yuanma.org/data/2006/0730/article_1266.htm

再補充一下:

[轉帖]char、nchar、varchar、nvarchar,對比那個好?

資料庫定義到char類型的欄位時,不知道大家是否會猶豫一下,到底選char、nchar、varchar、nvarchar、
text、ntext中哪一種呢?結果很可能是兩種,一種是節儉人士的選擇:最好是用定長的,感覺比變長能省些空
間,而且處理起來會快些,無法定長只好選用定長,並且將長度設置盡可能地小;另一種是則是覺得無所謂,
盡量用可變類型的,長度盡量放大些。

鑒於現在硬體像蘿卜一樣便宜的大好形勢,糾纏這樣的小問題實在是沒多大意義,不過如果不弄清它,
總覺得對不起勞累過度的CPU和硬碟

下面開始了(以下說明只針對SqlServer有效):

1、當使用非unicode時慎用以下這種查詢:
select f from t where f = N'xx'

原因:無法利用到索引,因為資料庫會將f先轉換到unicode再和N'xx'比較

2、char 和相同長度的varchar處理速度差不多(後面還有說明)

3、varchar的長度不會影響處理速度!!!(看後面解釋)

4、索引中列總長度最多支持總為900位元組,所以長度大於900的varchar、char和大於450的nvarchar,nchar
將無法創建索引

5、text、ntext上是無法創建索引的

6、O/R Mapping中對應實體的屬性類型一般是以string居多,用char[]的非常少,所以如果按mapping的
合理性來說,可變長度的類型更加吻合

7、一般基礎資料表中的name在實際查詢中基本上全部是使用like '%xx%'這種方式,而這種方式是無法利用
索引的,所以如果對於此種欄位,索引建了也白建

8、其它一些像remark的欄位則是根本不需要查詢的,所以不需要索引

9、varchar的存放和string是一樣原理的,即length {block}這種方式,所以varchar的長度和它實際佔用
空間是無關的

10、對於固定長度的欄位,是需要額外空間來存放NULL標識的,所以如果一個char欄位中出現非常多的NULL,
那麼很不幸,你的佔用空間比沒有NULL的大(但這個大並不是大太多,因為NULL標識是用bit存放的,
可是如果你一行中只有你一個NULL需要標識,那麼你就白白浪費1byte空間了,罪過罪過!),這時候,
你可以使用特殊標識來存放,如:'NV'

11、同上,所以對於這種NULL查詢,索引是無法生效的,假如你使用了NULL標識替代的話,那麼恭喜你,
你可以利用到索引了

12、char和varchar的比較成本是一樣的,現在關鍵就看它們的索引查找的成本了,因為查找策略都一樣,
因此應該比較誰佔用空間小。在存放相同數量的字元情況下,如果數量小,那麼char佔用長度是小於varchar
的,但如果數量稍大,則varchar完全可能小於char,而且要看實際填充數值的充實度,比如說varchar(3)
和char(3),那麼理論上應該是char快了,但如果是char(10)和varchar(10),充實度只有30%的情況下,
理論上就應該是varchar快了。因為varchar需要額外空間存放塊長度,所以只要length(1-fillfactor)
大於這個存放空間(好像是2位元組),那麼它就會比相同長度的char快了。

13、nvarchar比varchar要慢上一些,而且對於非unicode字元它會佔用雙倍的空間,那麼這么一種類型
推出來是為什麼呢?對,就是為了國際化,對於unicode類型的數據,排序規則對它們是不起作用的,
而非unicode字元在處理不同語言的數據時,必須指定排序規則才能正常工作,所以n類型就這么一點好處。

總結陳詞:
1、如果數據量非常大,又能100%確定長度且保存只是ansi字元,那麼char
2、能確定長度又不一定是ansi字元或者,那麼用nchar;
3、不確定長度,要查詢且希望利用索引的話,用nvarchar類型吧,將它們設到400;
4、不查詢的話沒什麼好說的,用nvarchar(4000)
5、性格豪爽的可以只用3和4,偶爾用用1,畢竟這是一種額外說明,等於告訴別人說,我一定需要長度
為X位的數據

C. 關於資料庫中的欄位的大小定義

access中余數文本型欄位岩毀鍵大小設為1,表示可以容納一個字元,隨粗巧便什麼字元都可以。
很多資料庫存儲文本型用的是unicode編碼,英文字元和漢字都佔用相同位元組數,2個位元組。

D. 如何設置EXcel中欄位的類型和長度

Excel表格不同於FoxPro等其他資料庫軟體,對輸入值的限定採用【數據有效性】功能(高版本稱為」數據驗證「)。

如圖:可以設搜閉譽置文本長度為3-5個字元,世段當輸入字元數不在此范圍時,將彈出警告對話框。


其他復雜條件限制,一般都通過公式來設置。

E. 資料庫中如何把某欄位變為1,2,3,4,5的序列有這個命令嗎

你好!
select
case
when
欄位賣神=3
then
1
when
欄位=6
then
2
when
欄位=35
then
3
when
欄位
=
54
then
4
when
欄位=473
then
5
end
from

希望能幫助到你。
希望對你中州虧有所幫助,望采跡芹納。

F. oracle資料庫中一個欄位現在有05 5兩種數值 怎麼通過設定屬性的方式把數值都變為05 並且以後輸入5也是05

1、可以在入庫的時候轉換5變為05
方法:氏返創建觸發器、入庫的時候程序控制。
2、可以在出庫的侍核帶時老蘆候轉換5變為05
方法:select語句的時候使用decode或者case when 轉換
3、可以使用虛擬欄位
方法:創建虛擬欄位自動轉換5變為05,以後每次select取得時候直接取虛擬欄位。

G. 如何修改資料庫欄位的最大長度限制

如何修改資料庫欄位的最大長度限制
數據困正庫欄位的最大長度為4000,貌似不能修改,遇到大的文本可以用方帶寬法截成兩個文本進行存儲,提取的時候再拼接起來蠢尺亮

H. sql怎麼修改表欄位的大小

alter table <表名> alter column <欄位名> 新類型名(長度)

示例:假如有名T1,欄位名F1,原來F1為varchar(3),現在要改為varchar(10),則可以這么寫:

alter table T1 alter column F1 varchar(10)

一般地,改欄位名可以用這條語句:

alter table A rename column a to c

但是,實際應用中,我們往往是用J-SQL進行編譯,而J-SQL不支持修改欄位名,所以,如果一定要修改欄位名,那麼只有通過變通的方法了,具體思路為:
1.新建一個欄位,取名為c;
2.將欄位a的內容拷貝到c;
3.刪除欄位a;

sql修改欄位長度的語法:

alter table 表名 modify 欄位名 欄位類型;

sql修改欄位長度的示例代碼

alter table qtline modify qtl_bidernote VARCHAR2(4000);
標准SQL,對任何資料庫都適用

alter table fzrtmis.reporttemplate modify REPNAME varchar(100);
修改欄位名名稱

ALTER TABLE TABLENAME RENAME COLUMN COL1 TO COL2;
添加欄位

alter table fzrtmis.itiembuildqk add STATIONSTATE CHAR(1)

I. sql資料庫,欄位 bh 1 2 3 4 批量修改為 bh 5 6 7 8 怎麼寫

用個循環試試,加上update命令

J. 表中「姓名」欄位的欄位大小為5,在此列最多可輸入的漢字數和英文字元數分別是多少

漢字是2個半`英文是5個`數字是5個