1. 程式人生 > >【SQLServer】 儲存過程中,使用IN函式

【SQLServer】 儲存過程中,使用IN函式

在儲存過程中使用IN函式,傳入多個引數時,會有問題,三種解決方案:

新增函式:

create FUNCTION [dbo].[Split2]
(
    @RowData varchar(max),
    @SplitOn varchar(1)
)  
RETURNS @RtnValue table 
(
    Id int identity(1,1),
    Data varchar(4000)
) 
AS  
BEGIN 
    Declare @Cnt int
    Set @Cnt = 1

    While (Charindex(@SplitOn,@RowData)>0
) Begin Insert Into @RtnValue (data) Select Data = ltrim(rtrim(Substring(@RowData,1,Charindex(@SplitOn,@RowData)-1))) Set @RowData = Substring(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData)) Set @Cnt = @Cnt + 1 End Insert Into @RtnValue (data) Select
Data = ltrim(rtrim(@RowData)) Return END

動態執行sql

EXEC('insert @TempTable select * from mytable where uid in ('[email protected]+')')

使用charindex代替,但是此種方案,我沒有測試成功,但是網上大部分人說,這個是可以的。所以這個有待商榷。

insert @TempTable select * from mytable where charindex(','+uid+',',''[email protected]+'')>0

相關推薦

SQLServer 儲存過程使用IN函式

在儲存過程中使用IN函式,傳入多個引數時,會有問題,三種解決方案: 新增函式: create FUNCTION [dbo].[Split2] ( @RowData varchar(max

戶口篇換房過程戶口怎麼遷移?

換房過程中,隨著房屋產權的變更,戶口面臨遷移的問題。 一、賣舊房換新房戶口遷出(新房未到遷戶口時間) 最常用的方法是:與買家協議遷戶時間延後,簽訂戶口遷出承諾書或支付遷戶保險金。 如果屆時買家遷入,您會被擠掉成為當地派出所集體戶口。 當然,也可以選擇在親戚朋友的房產上掛靠戶口。

MySQL儲存過程INOUTINOUT型別 用法

MySQL儲存過程中有IN,OUT,INOUT型別 ----------------------------------- ## IN IN引數只用來向過程傳遞資訊,為預設值。 ## MySQL儲存過程"in"引數:跟C語言的函式引數的值傳遞類似,MySQL儲存過程內部

SQLserver儲存過程建立函式建立檢視

alter PROCEDURE usp_sumgoods(@supplierid VARCHAR(50)) as BEGIN if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetM

SQL儲存過程

前言 儲存過程(Stored Procedure)是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集 區別 觸發器與儲存過程的唯一區別是觸發器不能執行EXECUTE語句呼叫,而是在使用者執行Transact-SQL語句時自動觸發執行 作用

DP在矩陣選擇一條從左上角到右下角、經過數字之和最大的路徑

題目:EPI int max_fishing(vector<vector<int>> A) { if (A.empty() || A[0].empty()) throw new exception; for (int i = 0; i &l

儲存過程關於出現null的問題

假設有一個表A,定義如下: create table A( id varchar2(50) primary key not null, vcount number(8) not null, bid varchar2(50) not null -- 外來鍵 );如果在儲存過程中

Mybatis為什麼mybatis插入引數時佔位符裡面要寫jdbcType?

為什麼mybatis中,插入引數時,佔位符裡面要寫jdbcType? 最近一直很納悶,以前寫Mybatis,老師都沒有要求寫過jdbcType,也沒有出過什麼錯,而在公司,卻都寫了jdbcType,這個jdbcType為什麼都寫?是不是有什麼原因; 看了

sql-儲存過程實現迴圈遍歷一列資料

前言      專案中要實現前端頁面動態配置行為,每個行為呼叫不同的儲存過程的功能,於是乎小編一頭扎進了儲存過程的海洋中,愈發覺得之前寫的儲存過程算是基礎了。遇到一個問題:查詢到表中一列資料,需要取出每一行資料來執行下一個儲存過程。這可怎麼鬧?別急,小編來給

儲存過程表記錄內容之間的複製

現在有表A,表B, 要把B表中的某條記錄取出來,然後選取指定的欄位複製到表A中,SQL語法如下declare @Id int @Id = SCOPE_IDENTITY() insert into T

資料庫 儲存過程

1.儲存過程是什麼?     百度百科:儲存過程(Stored Procedure)是在大型資料庫系統中,一組為了完成特定功能的SQL 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編

JavaFilter過濾器在chain.doFilter(request,response)後若有重定向或轉發語句

在chain.doFilter(request,response)後若有重定向或轉發語句,執行順序是: 1.所要訪問的資源不是轉發的目標資源: chain.doFilter(request,

Unity3d在Unity3d使用C#訪問系統剪貼簿

直接上程式碼 public static class ClipboardHelper { private static PropertyInfo m_systemCopyBufferProperty = null; private static PropertyIn

MySQL儲存過程定義變數有兩種方式

MySQL儲存過程中,定義變數有兩種方式: 1.使用set或select直接賦值,變數名以 @ 開頭. 例如:set @var=1; 可以在一個會話的任何地方宣告,作用域是整個會話,稱為會話變數。

MySql儲存過程的基本函式和需要用到的運算子

mysql儲存過程學習總結-操作符算術運算子+ 加 SET var1=2+2; 4- 減 SET var2=3-2; 1* 乘 SET var3=3*2; 6/ 除 SET var4=10/3; 3.3333DIV 整除 SET var5=10 DIV 3; 3% 取模 SET var6=10%3 ; 1比較

廣州服務器回收服務器維護過程你需要了解的5個小常識

windows ron 就是 圖片 渲染 天都 驚人的 領域 其他人 大多數人認為,服務器僅僅是升級後的臺式機。但任何在數據中心工作過的人都知道,它們的差別挺大的。 盡管web服務器每天都要承擔數百萬訪問者的負載,但對於普通用戶來說,它們仍然神秘莫測。以下是關於服務器你可能

轉載postgresql儲存過程返回型別

前言 假如需要在pg上面寫儲存過程,那麼返回型別必定是一個疑問點。 一般而言,對於一個查詢語句,為了可以統一動態返回各種資料,我們是不會蠢到每一個儲存過程都額外編寫一個返回型別 譬如: (id,name,password) 之類的,所以在寫的時候肯定會考慮 setof record這個動

面試題多執行緒在執行過程某個執行緒執行時突然釋放鎖。會發生的特殊狀態

一,背景 今天在刷面試題的時候,做到一道面試題,雖然看了答案,但有一個答案還是不理解。後來研究了一下,得到結論:執行緒拿到鎖進行執行時,哪怕獲得了CPU執行權,但是那個鎖不能丟失,它後面執行的過程都需要帶著鎖,才能往下繼續執行。 二,測試程式碼 /**

maven排除mavenjar包依賴的解決過程 例子:spring cloud啟動zipkin報錯maven依賴jar包衝突 Class path contains multiple SLF4J bindings.

一直對於maven中解決jar包依賴問題的解決方法糾結不清: 下面這個例子可以說明一個很簡單的解決方法:     專案啟動報錯: Connected to the target VM, address: '127.0.0.1:59412', transport: 'sock

mybatismybatis呼叫sqlserver儲存過程和表值函式

儲存過程和表值函式的區別 最簡單的區別是儲存過程是pr開頭的,而儲存過程是fn開頭的,表值函式返回的是一個表結構的結果。如果mybatis用呼叫儲存過程的方式去呼叫表值函式,就會丟擲以下的異常: exc