sqlserverin字元串
這跟你的存儲過程有關,明顯是傳進去的id值拼接成了一個字元串,存儲過程沒處理,導致存儲過程真正執行的sql是這樣的↓
select * from tb where id in('1002,5008')
看到沒,資料庫就認為'1002,5008'這個是一個單獨的id
把存儲過程的sql列印出來看下你就清楚了。
Ⅱ sqlserver select a from b where a in (X)
1、先說先面的為什麼不行:
前面的IN函數的參數是一個結果集,而的結果集是一個經過修改的長字串,不是多個記錄的集合。
2、再說後面的:
BB欄位應該是類似'2012019339'這樣的短數據。所以不可有一個與你得到的長字串一樣。
而後面的是一個以逗號分隔的字串集合,只要BB是其中一個字串,就符合查詢條件。
3、解決方法:
你應該是想用這樣的方式代替一個長長的查詢語句:
select * from aa where bb in (@3)
用後面的幾行語句替換你的這一行:
select * from aa where bb in (
select RTrim( ''''+REPLACE ( SUBSTRING (@3 , 1 , LEN(@3)), ',' ,''',''')+'''' ))
即可:
declare @sqlstr Nvarchar(1000)
set @3= RTrim( ''''+REPLACE ( SUBSTRING (@3 , 1 , LEN(@3)), ',' ,''',''')+'''' )
set @sqlstr=N'select * from aa where bb in('+@3+')'
exec sp_executesql @sqlstr
Ⅲ SQLSERVER璇鍙 in鍜宔xists鍝涓鏁堢巼楂樻湰浜烘祴璇曡瘉鏄
鐩稿悓搴撶粨鏋勪笅錛屽緢鏄庢樉 Exists鏁堢巼楂
in 鍦ㄥ瓧絎︿覆涓嬬殑鏁堢巼鏄寰堜綆鐨勶紝涓昏佸師鍥犳槸緔㈠紩
濡傛灉鏄疘NT鍨嬶紝鏈夌儲寮曠殑鎯呭喌錛屽熀鏈涓婃病澶澶у尯鍒
娌℃湁澶澶ф暟鎹鐨勬儏鍐碉紝鍩烘湰涓婁笉鐢ㄧ籂緇撹繖浜涗笢瑗
Ⅳ sqlserver 怎麼實現 (A,B) NOT IN (SELECT A,B FROM *****)
換一個思路,你的查詢條件可以如下描述
你要實現查詢結果的數據(表 tab )在 A,B 欄位的值另一表(表subtab)中不存在
即
根據 表 tab 中的A,B欄位值在 subtab中無法查詢到數據。
實現語句如下
not exists (SELECT * FROM subtab where subtab.A= tab.A and subtab.B= tab.B)
這種寫法在orcle中效率要高於 not in
Ⅳ SQLSERVER 2005資料庫 IN 操作符 的問題
需粗慧要輔助表
select a.Functionary,isnull(sum(MoneyReceipt),0) as TotalReceipt
from
(select Functionary='111' union all
select '2222' union all
select '3333'並亂union all
select '44444'岩蔽答) a
left join PE_Orders b on a.Functionary=b.Functionary
group by a.functionary