利用SQL表生成按日期序列的唯一ID
1. 建立一個表,用於存現在最大的ID
SELECT [ID],[PreFix],[Code] FROM [DocumentNO]
2. 增加SP,利用鎖表,生成相應的ID
Create PROCEDURE [dbo].[GeneralDocumentNo] ( @preFix nvarchar(256), @outCode varchar(256) output ) AS BEGIN -- ============================================= -- Author: xiefs -- Create date: 2013-12-18-- Description: 生成系統唯一序列號 -- ============================================= Declare @docNo nvarchar(256), @month varchar(10), @day varchar(10), @no varchar(10), @num int , @lenNum int, @sql nvarchar(4000), @maxCode varchar(256), @tableNamevarchar(256) SET NOCOUNT ON; set @tableName='DocumentNo'; set @month=CAST(month(getdate())as varchar); set @day = CAST(day(getdate())as varchar); if(LEN(@month)=1) set @month='0'+@month; if(LEN(@day)=1) set @day='0'+@day; set @docNo = @preFix+cast(YEAR(getdate()) as varchar)+ @month+@day; set @sql =N'select top 1 @p=code from '+@tableName +' WITH(holdlock,tablockx) where CHARINDEX('''+@docNo+''',code)=1 order by id desc'; EXEC sp_executesql @sql,N'@p varchar(256) output',@p=@maxCode output ; if(@maxCode is null) begin set @no='1'; end; else begin set @no=CAST((CAST(SUBSTRING(@maxCode,len(@docNo)+1,LEN(@maxCode)) as int)+1) as varchar); end; set @lennum = LEN(@no); set @num =4; while @lenNum<4 begin set @lenNum=@lenNum+1; set @no='0'+@no; end insert into documentno(Prefix,Code) values(@preFix,@docNo+@no); --select @[email protected]; set @outCode=@docNo+@no; END
相關推薦
利用SQL表生成按日期序列的唯一ID
1. 建立一個表,用於存現在最大的ID SELECT [ID],[PreFix],[Code] FROM [DocumentNO] 2. 增加SP,利用鎖表,生成相應的ID Create PROCEDURE [dbo].[GeneralDocumentNo] ( @preFix nvarcha
sql表中自增序列的新增,刪除,與修改
直接 src tar 綁定 後綁定 style com 屬性 新的 首先我們應該對Sequences,有個基本的概念: 主要是用來唯一標識,這樣方便查詢整條數據信息,主要的屬性有:自增量,最大值,最小值,初始值,所有者,自身名稱,關聯表名 1、重新設置序列開始的數字sql,
MYSQL之表分割槽----按日期分割槽
錯誤的按日期分割槽例子 最直觀的方法,就是直接用年月日這種日期格式來進行常規的分割槽: PLAIN TEXT CODE:mysql> create table rms (d date) -> partition by range (d) -&
Zookeeper命名服務——生成分散式有序且唯一id
生成分散式有序且唯一id的方法有很多種,使用zookeeper是比較簡單的一種方法,只是生成的速度不高,這裡只是一個藉助zk的版本號生成分散式唯一且有序id的例子。 ZkIdGenerator.java: package cc11001100.zookeeper.uniqId
利用SQL語句查詢數據庫中所有表
結果集 sel clas 使用 創建 ref 註意 目錄 tails Oracle: SELECT * FROM ALL_TABLES;--系統裏有權限的表 SELECT * FROM DBA_TABLES;-- 系統表 SELECT * FROM USER_TA
簡單按日期查詢mysql某張表中的記錄數
unsigned 計劃 表結構 記錄 create sig 站點 signed using 測試表表結構:mysql> show create table dr_stats\G 1. row Table: dr_stats Create Table:
SQL Server 生成時間序列
WITH DateSequence AS ( SELECT CONVERT(DATETIME,'20150101') AS DateNum UNION ALL SELECT DateNum+1 FROM DateSequence WHERE Da
PHP生成日期序列
<?php $d0 = '2010-04-20'; $d1 = '2010-04-23'; $_time = range(strtotime($d0), strtotime($d1), 24*60*60); $_time = array_map(create_function('$v
在Oracle、MySQL中執行sql指令碼生成hive建表語句
python3指令碼: #mysql for i in range(len(table_name)): sql1 = """SELECT CONCAT('create table ','%s','(') UNION ALL SELECT CONCAT(
SQL Server 根據樹狀結構表生成以/號分割的路由字串
很多情況下,我們有必要把樹形結構進行資料梳理。比如,要方便的過濾出一個父節點下的所有子節點等等。。。 這個時候,我們可以生成一個路徑表字符串,在應用時只需要對該字串進行索引即可達成目的。 目標:按圖示的部門結構樹,獲取本身的完整路徑字串。比如,前道工序部門,其部門程式碼為PDTE,上級部門為PD生產部,按
資料庫SQL實踐49:針對庫中的所有表生成select count(*)對應的SQL語句
思路: 列出資料庫中所有表名: select name from sqlite_master where type='table' 用||連線 "select count(*) from" || name || ";"從而實現連線 select "select count(*)
按日期建立資料庫表--美美美美菜菜菜菜
<?php class TOrderBaseModel extends DbModel { const BASE_TABLE_NAME = 't_order_base'; private static $db_connection; private static
oracle表按日期分割槽建立、新增、修改、刪除
Oracle11G分割槽表 當表中的資料量不斷增大,查詢資料的速度就會變慢,應用程式的效能就會下降,這時就應該考慮對錶進行分割槽。表進行分割槽後,邏輯上表仍然是一張完整的表,只是將表中的資料在物理上存放到多個表空間(物理檔案上),這樣查詢資料時,不至於每次都掃描整張表。 作用: Oracle的表
POI 將按日期分表的資料彙總到一個excel中 大資料量
一. 簡介 現在有按時間分的使用者表,要在每月一號將這些表的資料彙總到一個excel中。每張表的資料量很大。 昨天通宵搞得,只為紀念,方便以後遇見同樣的需求做參考。 之前是想著每天匯出一個excel, 然
Excel[SQL]實現按日期累加
參考程式碼1:根據a.日期,和b表日期比較,遍歷(逐條資料查詢b.日期)只要是小於等於a.日期的收入資料,就累加求和。 select a.日期, ( select sum(b.賣茶葉蛋收入) as 累加 from [sheet1$a1:b13] b wher
Mysql --針對庫中的所有表生成select count(*)對應的SQL語句
CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT N
PostgreSQL中使用動態SQL-實現自動按時間建立表分割槽
PostgreSQL中通過繼承,可以支援基本的表分割槽功能,比如按時間,每月建立一個表分割槽,資料記錄到對應分割槽中。按照官方文件的操作,建立子表和index、修改trigger等工作都必須DBA定期去手動執行,不能實現自動化,非常不方便。 嘗試著通過在plpgsql程式碼
各種按日期、時間段統計SQL語句
--前一日 select * from 表名 where datediff(d,cast(日期 as datetime),getdate())=1 --上週 select *
powerdesigner15 生成sql 表名帶引號的解決辦法
powerdesigner15 連線 oracle11g 時,我建立了一張表 aaa 生成的sql語句為: drop table “aaa” cascade constraints; create table “aaa” ( “id”
SQL語句生成表結構對應的javabean及mybatis的resultMap
命令列連線MySQL資料庫 mysql --default-character-set=[編碼] -h [IP] -P[埠(沒有空格)] -u [使用者名稱] -D [資料庫名] -p[密碼(沒有空格)]例如 mysql --default-character-se