SQL 分割字串和通用分頁查詢儲存過程
USE [sg] --使用某個資料庫
GO/****** Object: StoredProcedure [dbo].[findTableIndex] Script Date: 2017/4/1 17:02:58 ******/
SET ANSI_NULLS ON
GO
--------------------------------分割字串,生產表----------------------------------------------
go
create FUNCTION F_split(@c VARCHAR(2000), --分割字串,生產表
@split VARCHAR(2))
returns @t TABLE(
Field VARCHAR(20))
AS
BEGIN
WHILE( Charindex(@split, @c) <> 0 ) -- 字元@c在@split中的位置
BEGIN
INSERT @t
(Field)
VALUES (Substring(@c, 1, Charindex(@split, @c) - 1)) --擷取字串,前面部分
SET @c = Stuff(@c, 1, Charindex(@split, @c), '') --擷取字串,後面部分
END
INSERT @t
(Field)
VALUES (@c)
RETURN
END
go
----------------------------------------------------------通用分頁查詢--------------------------------------------
go
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[findTableIndex]( --通用分頁查詢
@Table nvarchar(100), --查詢表名
@Fields nvarchar(200), --查詢表名
@Where nvarchar(3000), --查詢條件
@PageIndex int, --當前頁數
@PageSize int --頁大小
)
as
set nocount ON --不返回影響行數,提高效率
set ansi_warnings ON --當設定為 ON 時,如果聚合函式(如 SUM、AVG、MAX、MIN、STDEV、STDEVP、VAR、VARP 或 COUNT)中出現空值,將生成警告資訊。當設定為 OFF 時,不發出警告。
begin
if (object_id(@Table,N'U') is null) --查詢表是否存在,防止惡性字元
begin
return '表不存在'
return
end
begin --統計@Fields中的欄位不在是表中的數量,防止惡性字元
declare @Field nvarchar(20)
set @Field = @Fields
declare @FieldDifferentCount int --統計@Fields中的欄位不在是表中的數量
Select @FieldDifferentCount = COUNT(*) From dbo.F_split(@Field,',') t1 where Field not in (select name from syscolumns where id=object_id(@Table) ) -- 查詢@Fields中的欄位通過分割後生產的欄位不在當前表中的數量
if @FieldDifferentCount > 1
begin
return '存在當前表中不存在的返回欄位'
end
end
begin
if(@PageIndex < 0)
set @PageIndex = 0;
end
begin
if(@PageSize < 0)
set @PageSize = 0
end
declare @sql varchar(5000)
declare @new_key varchar(5000)
set @new_key = REPLACE(REPLACE(' '[email protected],' )',''),' --','') --替換敏感字元,只要替換這幾個,防止惡性字元
set @sql = 'select top '+CONVERT(varchar,@PageSize)+' '[email protected]+' from (
select top '+CONVERT(varchar,@PageSize*@PageIndex)+' ROW_NUMBER() over (order by id desc) row,* from '[email protected]+Replace(@new_key,'#','''')+' ) a order by id asc' --由於在key中直接使用 like '%key%'發生異常,就使用 like #key#,到了這裡在替換為 : '
exec(@sql)
end
-----------------------------------------執行儲存過程-----------------------------------------
go
exec findTableIndex 'UserInformation0','*','',1,10
相關推薦
SQL 分割字串和通用分頁查詢儲存過程
USE [sg] --使用某個資料庫 GO /****** Object: StoredProcedure [dbo].[findTableIndex] Script Date: 2017/4/1 17:02:58 ******/ SET ANSI_NULLS
分頁查詢儲存過程sql語句
--建立分頁的儲存過程 alter procedure proc_page @tabName varchar(50), @pageIndex int=1, @pageSize int=5, @pk varchar(20)='id', @cols varchar(200)
MSSQL的分頁查詢儲存過程
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go --分頁儲存過程 CREATE PROCEDURE [dbo].[sp_Paging] ( @Tables nvarchar(1000),
bos 第4 (區域excel批量導入、區域通用分頁查詢、分區的添加、分區多條件分頁查詢、分區導出excel)
sea htm 不能 長安 基金會 格式 address ret body BOS項目筆記 第4天 今天內容安排: 1、區域批量導入功能 jQuery OCUpload(一鍵上傳插件)、apache POI、pinyin4j 2、實現區域的分頁查詢 3、對分頁代碼重構
SQL on HBase -- phoenix 之分頁查詢
最近一個專案中使用了HBase,有一部分實時查詢的需求。HBase本身只有一種排序,即按照rowkey的字典升序來排序資料。然而我們常常會碰到各種各樣的排序需求。 對於簡單的需求(比如專案確定只有某一種特定排序的需求),則可以通過對rowk
兩個sql server 2000的通用分頁儲存過程
第一個支援唯一主鍵,第二支援多主鍵,測試過,效率一般 CREATE PROC P_viewPage /* no_mIss 分頁儲存過程 2007.2.20 QQ:34813284 適用於單一主鍵或存在唯一值列的表或檢視
mysql和oracle分頁查詢
mysql分頁 分頁查詢 使用 pan mysql分頁查詢 nbsp max 記錄 不能 MYSQL分頁查詢 方式1: select * from table order by id limit m, n; 該語句的意思為,查詢m+n條記錄,去掉前m
通用分頁存儲過程
bsp nbsp 總數 sel exist 使用 con 排序 當前頁 if exists(select * from sys.objects where name=‘存儲過程名稱‘)drop proc 存儲過程名稱goCREATE proc 存儲過程名稱@tableNam
.NET平臺開源專案速覽(7)關於NoSQL資料庫LiteDB的分頁查詢解決過程
在文章:這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧!(第二輯) 與 .NET平臺開源專案速覽(3)小巧輕量級NoSQL檔案資料庫LiteDB中,介紹了LiteDB的基本使用情況以及部分技術細節,我還沒有在實際系統中大量使用,但文章釋出後,有不少網友( )反應在實際專案中使用過,效果還
分頁查詢儲存搜尋條件跳轉連結再返回帶回顯思路
先到controller中找到對應的方法(list),然後result到對應的jsp頁面,在該頁面上用js獲取搜尋條件的id,把id放到頁面隱藏的input中,form表單提交到對應的c
Oracle學習筆記 -分頁,儲存過程,自增
Oracled 的欄位自增,查詢,遊標的返回,儲存過程。 1,自增(觸發器) //還有一個條件需要增加一個佇列 create or replace TRIGGER MYSYSTEM.CBOUNCEID BEFORE INSERT ON MYSYSTEM.BOUNCERECORD
MySQL資料庫分頁的儲存過程
MySQL的的的的分頁通用的儲存過程可以先寫出這幾行程式碼:SET @ 變數名 = CONCAT('select * from person limit',((1-1)* 5),',',5,''); FROM @變數名;EXECUTE a;當你發現在你的資料庫儲存過程資料夾有
oracle 分頁查詢和sql server 分頁查詢 的sql語句
oracle: SELECT * FROM ( SELECT TEMP.* ,ROWNUM RN FROM ( 表) TEMP WHERE ROWNUM <=currentPage * perPageRows ) WHERE RN > (currentPage
JAVA 後臺拼接分頁查詢SQL oracle/sqlserver/db2/達夢資料庫通用
JAVA 後臺拼接分頁查詢SQL /** * 拼接分頁查詢sql<br/> * ORACLE,SQLSERVER,DB2,DM通用 * * @param field * @param from * @param page * @
sqlserver通用分頁sql語句 關聯查詢
SELECT TOP (#{pages}*#{limit}) * FROM ( SELECT ROW_NUMBER() OVER (O
ajax分頁查詢信息的通用方法
execute .sql sco 結果 tex warnings path lec 組合 1.頁面準備分頁的表格與分頁div 同時需要在查詢條件表單中準備隱藏當前頁與頁大小的文本框 <div class="container-flu
ORACLE分頁查詢SQL語法——高效的分頁
推薦 col 停止 sql 條件 esc 記錄 table select --1:無ORDER BY排序的寫法。(效率最高)--(經過測試,此方法成本最低,只嵌套一層,速度最快!即使查詢的數據量再大,也幾乎不受影響,速度依然!) SELECT * FROM (SEL
mysql sql分頁查詢語句
mysql select body from 記錄 condition rom col mysq SELECT * FROM ‘table‘ ORDER BY ‘condition‘ DESC LIMIT ‘開始索引‘,‘記錄數‘ mysql sql分頁查詢語句
SQL分頁查詢的幾種方式
但是 order 結果 htm sql分頁 sele esc 註意 介紹 https://www.cnblogs.com/lxhbky/p/5962393.html 需求:查詢表dbo.Message,每頁10條,查詢第2頁 1:TOP() SELECT TOP(2
sql 分頁查詢 (每次6行 )
分享 數據 mage com http 行數 -- where SQ -- 對比 數據 是否 相同 select * from [dbo].[ProjecrInfo] where Project_state=‘已審核‘ -- 查詢 已經 審核 有多少數據 -- 每次 按