我最近從OpenOffice Base切換到MySQL社區。在ooBase中,您可以在將整數輸入數據庫時自定義整數。例如,我可以鍵入2013_00000,然後此列中的每個數字都將以這種方式格式化(2013_00001,2013_00002,...)。在與MySQL社區玩了一段時間之後,我注意到沒有明顯的方式來格式化這樣的自定義整數。我可能會忽略一些基本的東西,但如果有人知道如何做到這一點,請告訴我。謝謝在mysql中創建序列號的自定義格式示例
回答
爲了在插入數據之前處理數據,您需要一個trigger。
類似的東西:
CREATE TRIGGER ins_sn BEFORE INSERT ON tbl
FOR EACH ROW
SET NEW.sn = CONCAT(LEFT(NEW.sn, 4), '_', RIGHT(NEW.sn,5));
如果你需要更新你行,你需要第二個觸發:
CREATE TRIGGER upd_sn BEFORE UPDATE ON tbl
FOR EACH ROW
SET NEW.sn = CONCAT(LEFT(NEW.sn, 4), '_', RIGHT(NEW.sn,5));
爲完整的例子見http://sqlfiddle.com/#!2/01428/1。
這裏,爲了簡單起見,我使用CONCAT()
,LEFT()
和RIGHT()
函數。也許你的數據需要更復雜的操作(即填充)。 MySQL有一組豐富的string functions。無論如何,這是原則。
號碼的前綴,實際上需要更新。所以,當你說更新觸發器時,你只需要這樣寫:CREATE TRIGGER ON UPDATE ins_sn BEFORE INSERT ON tbl – user2618927
@ user2618927我編輯了答案(和sqlfiddle演示)來演示'ON INSERT'和'ON UPDATE觸發器。 –
@Sylvain_Leroux好的非常感謝你 – user2618927
不是最靈活的(這裏鎖定到一個下劃線分隔符),但你可以用觸發器做到這一點,
CREATE TRIGGER trig_MyTable BEFORE INSERT ON MyTable
FOR EACH ROW
BEGIN
SELECT seq into @seq FROM MyTable_Seq FOR UPDATE;
SET NEW.id = @seq, @cutoff = LOCATE('_', @Seq);
UPDATE MyTable_Seq SET Seq =
CONCAT(LEFT(@seq, @cutoff),
LPAD(SUBSTR(@seq, @cutoff+1)+1, LENGTH(@seq)[email protected], '0'));
END;
//
好吧我明白你使用這個代碼的原則。我希望有一個更簡單的點擊式解決方案,但我會嘗試使用觸發器。感謝這個想法 – user2618927
- 1. Highcharts列圖自定義圖例格式不顯示圖例符號
- 2. Yii2格式化程序 - 創建自定義格式
- 3. 自定義編號格式
- 4. MySQL數據庫與用戶創建表與自定義列號
- 5. 如何創建自定義網格列?
- 6. Excel中的自定義格式號碼
- 7. 自定義的有序列表格式
- 8. Django的自定義序列格式
- 9. 創建自定義成員資格提供程序的示例代碼
- 10. 如何在java中使用單例模式創建序列號
- 11. 如何在Android中創建自定義視圖組示例
- 12. 在.NET中創建自定義DateTime格式的地方C#
- 13. 在CellTable列中創建自定義ActionCell
- 14. 如何在LibreOffice中創建(編號)系列自定義Intervalls
- 15. 如何在Textmate中創建自定義符號列表項?
- 16. 如何在kafka中創建自定義序列化程序?
- 17. 創建自定義樣式
- 18. 創建自定義樣式
- 19. 創建自定義隊列
- 20. 在MYSQL中創建序列
- 21. 在php中創建自定義日期格式
- 22. 在Excel中創建自定義時間格式
- 23. 在java中創建自定義圖像格式
- 24. 如何爲自定義應用程序創建文件格式
- 25. 創建自定義「操作」格式化程序 - jqgrid
- 26. 在OpenCv中創建CvPoint的自定義序列
- 27. 在Linux內核中創建您自己的自定義信號
- 28. 從mysql中的json請求創建自定義列表視圖
- 29. 如何根據行創建的日期在PostgreSQL中創建自定義序列?
- 30. 在android上創建自定義格式的對話框
Afaik,你需要一個觸發器。 –
您是否需要*插入*格式化值,或者您是否需要一種方法來格式化* * select *語句返回的值? –
@SylvainLeroux插入格式化值。它目前只是所有整數,但我想添加一年前綴作爲我所做的 – user2618927