用uuid生成20位的主鍵
select left(replace(uuid(), '-', ''),20) from dual另一種方法:
因為資料庫中有字母
需要排序的時候去除字母,重新取最大值,然後加1算作新的主鍵
select ifnull(dept_id,0)+1 from base_dept order by dept_id+0 desc limit 0,1或者
使用mysql函式cast/convert:
mysql為我們提供了兩個型別轉換函式:cast和convert,現成的東西我們怎能放過?
cast() 和convert() 函式可用來獲取乙個型別的值,並產生另乙個型別的值。所以我們也可以用cast解決問題:這個型別 可以是以下值其中的 乙個:
binary[(n)]
char[(n)]
date
datetime
decimal
signed [integer]
time
unsigned [integer]
select ifnull(dept_id,0)+1 from base_dept order by cast(dept_id as signed也可以使用convert來搞定此問題:) desc limit 0,1;
select ifnull(dept_id,0)+1 from base_dept order by convert(dept_id,signed) desc limit 0,1;
mysql生成varchar型別主鍵排序
用uuid生成20位的主鍵 select left replace uuid 20 from dual另一種方法 因為資料庫中有字母 需要排序的時候去除字母,重新取最大值,然後加1算作新的主鍵 select ifnull dept id,0 1 from base dept order by dep...
mysql關於char和varchar型別的區別
在mysql中,字串型別中的char屬於有固定長度的字串型別 二varchar型別屬於可變長度的字串型別 如何理解固定長度和可變長度呢?固定長度指 當長度設定為4時,長度是固定的 當實際值只有1位時,會自動用空格補足4位 可變長度指 當長度設定為4時,長度是隨著實際值為改變,最長為4 當實際值只有1...
MySQL資料庫varchar轉int型別的方法
mysql varchar轉int型別的方法 cast函式的使用 1 問題描述 獲取乙個表user中age的最大值。由於歷史原因,age是varchar型別的 2 問題解決 方案一 select max cast as unsigned integer from user 方案二 select fr...