我爲此使用了參數化查詢。我傳遞一個逗號分隔的唯一標識符字符串到這個查詢的參數被拆分。它使用一對唯一的標識符可以正常工作,但我認爲我的最大值達到了2000個字符。ASP.NET/SQL Server:從字符串轉換爲uniqueidentifier時轉換失敗
我有大約150個areaID和選擇幾個查詢工作正常。從字符串轉換爲 唯一標識符時,選擇所有查詢失敗的領域,並返回
轉換失敗。
對於在沒有遇到這個問題的情況下獲取更多值到查詢的任何建議嗎?
Area.AreaID IN (SELECT CONVERT(UNIQUEIDENTIFIER, Value) FROM dbo.Split(@AreaIDs,','))
/
USE [Triton2]
GO
/****** Object: UserDefinedFunction [dbo].[Split] Script Date: 12/11/2012 11:39:39 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[Split]
(
@List nvarchar(2000),
@SplitOn nvarchar(5)
)
RETURNS @RtnValue table
(
Id int identity(1,1),
Value uniqueidentifier
)
AS
BEGIN
While (Charindex(@SplitOn,@List)>0)
Begin
Insert Into @RtnValue (value)
Select
Value = ltrim(rtrim(Substring(@List,1,Charindex(@SplitOn,@List)-1)))
Set @List = Substring(@List,Charindex(@SplitOn,@List)+len(@SplitOn),len(@List))
End
Insert Into @RtnValue (Value)
Select Value = ltrim(rtrim(@List))
Return
END
「@ AreaIDs」的數據類型和'dbo.Split'中定義的參數是什麼?如果其中任何一個都是'[n] varchar(2000)',那麼就有你的答案。 [你可以看看TVPs。](http://www.sommarskog.se/arrays-in-sql-2008.html) –
你能分享你的Split功能的來源嗎?這不是ms sql server的內置函數。 –
我正在使用一個asp.net控制參數來傳遞唯一標識的逗號dilemmeted字符串。 –
user1751121