mysql資料庫用乙個字段表示多個狀態

2021-09-29 21:17:25 字數 1380 閱讀 5768

在實際的開發中,建資料庫表的有可能會因為最初的表設計不能滿足所用,為了標記某種狀態需要重新增加欄位,但是資料庫中如果有幾百萬條真實的資料,往往改變表結構是很危險的操作

有沒有辦法用乙個字段表示多個狀態,但是每個狀態不會互相干擾呢?

此時我們可以用到位操作

如果是表示刪除可以用1,未刪除用0(第一位)

如果是表示上架可以用1,未上架用0(第二位)

如果是表示預設可以用1,非預設用0(第三位)

…把這些狀態整合起來就是000,001,010…

這時候我們只需要判斷第一位是1還是0就知道是不是刪除狀態了,如刪除狀態:0 0 1,0 1 1,1 0 1,1 1 1。不管其他位是什麼都不會干擾到刪除位

在資料庫中我用int flag字段表示多個狀態

上**:

public

class

test

else

return flag;

}public

static

void

main

(string[

] args)

throws exception

}

執行結果

代表刪除的flag:1

代表上架的flag:11

代表預設的flag:111

代表非刪除的flag:110

代表非預設的flag:10

如果多個狀態用1和0表示不了呢

如果要增加的字段是string型別的,比如增加了name欄位

此時在建表的時候要預留乙個text content來存字串

map

map =

newhashmap

(); map.

put(

"***"

,"女");

map.

put(

"age"

,"18");

map.

put(

"name"

,"妞妞");

string s = jsonobject.

tojsonstring

(map)

;//這個就是要存在content裡面的字串

// system.out.

println

(s);

//要用的時候取出來轉回map

map = jsonobject.

parseobject

(s, map.

class

);

問題解決,收工

MySQL資料庫新增乙個字段

1 新增乙個字段 alter table tablename add 列名 資料型別 2 新增乙個字段設定預設值 alter table tablename add 列名 資料型別 default 0 注 這裡設定預設值為0 例子 在users表新增乙個int型別的字段isadmin,預設值為0 a...

mysql多表乙個字段

先執行這三個 show variables like group concat max len 查詢大小 set global group concat max len 10240000 設定大小滿足執行後能夠存放所有的插入語句 set session group concat max len 10...

mysql乙個欄位為空時使用另乙個字段排序

表中有兩個日期欄位createdate,updatedate。其中updatedate可以為空,要求使用updatedate排序,如果updatedate為空則使用createdate排序,結果要順序排下來。按照常規方法 這樣的結果是為空的資料排在了最下面,不符合要求。這樣試試 這樣排的結果是先按u...