2017-09-04 62 views
0

我想測試一個變量是唯一標識符,如果它然後將其轉換爲字符串,但它失敗:的SQL Server 2012:檢查是否是唯一標識符並轉換爲字符串

Declare @Item VARCHAR(50) 
Declare @OutString varchar(max) ; 

[email protected] is populated from various tables each cell separated by ',' 
--Getting the @Item from the @Outstring and convert it if its uid 
DECLARE @Pos INT 
DECLARE @Loop BIT 

SELECT @Loop = CASE WHEN LEN(@OutString) > 0 THEN 1 ELSE 0 END 

WHILE (SELECT @Loop) = 1 
BEGIN 
    SELECT @Pos = CHARINDEX(',', @OutString, 1) 

    IF @Pos > 0 
    BEGIN 
     SELECT @Item = SUBSTRING(@OutString, 1, @Pos - 1) 
     SELECT @OutString = SUBSTRING(@OutString, @Pos + 1, LEN(@OutString) - @Pos) 

     IF (TRY_CONVERT(UNIQUEIDENTIFIER, @Item) IS NOT NULL) 
     BEGIN 
      CONVERT(NVARCHAR(50), @Item) AS @Item --ERROR LINE incorrect syntax 
     END 
    END 
END 
+0

以什麼方式失敗?請提供更多信息。請發佈工作代碼(你有三個「開始」和一個「結束」)。如果發生錯誤,請隔離它發生的行併發布該信息 –

+0

當你嘗試這個'select convert(nvarchar(50),@Item)作爲@Item'而不是'convert(nvarchar(50),@ Item)as @ Item' – TheGameiswar

+0

你得到了轉換函數的語法錯誤。你看過語法嗎? https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql –

回答

0

它要麼是

select @Item = convert(nvarchar(50), @Item) 

select @Item = cast(@Item as nvarchar(50)) 
0

使用

SELECT convert(nvarchar(50), @Item) as Item 
0

語法錯誤是因爲您說過該操作,而不是SQL應該用它做什麼。

你想要返回字符串嗎?

SELECT CONVERT(NVARCHAR(50), @Item) AS Item 

附加到@Item? (但這個變量是你的循環裏面?)

SET @Item += CONVERT(NVARCHAR(50), @Item) 

不知道你想做的事,一旦你轉換的字符串的內容。也許你需要另一個變量來添加字符串(如上面除了不是SET @Item

相關問題