的SQL Server 2012:检查是否是唯一标识符并转换为字符串
问题描述:
我想测试一个变量是唯一标识符,如果它然后将其转换为字符串,但它失败:的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
答
它要么是
select @Item = convert(nvarchar(50), @Item)
或
select @Item = cast(@Item as nvarchar(50))
答
使用
SELECT convert(nvarchar(50), @Item) as Item
答
语法错误是因为您说过该操作,而不是SQL应该用它做什么。
你想要返回字符串吗?
SELECT CONVERT(NVARCHAR(50), @Item) AS Item
附加到@Item? (但这个变量是你的循环里面?)
SET @Item += CONVERT(NVARCHAR(50), @Item)
不知道你想做的事,一旦你转换的字符串的内容。也许你需要另一个变量来添加字符串(如上面除了不是SET @Item
)
以什么方式失败?请提供更多信息。请发布工作代码(你有三个“开始”和一个“结束”)。如果发生错误,请隔离它发生的行并发布该信息 –
当你尝试这个'select convert(nvarchar(50),@Item)作为@Item'而不是'convert(nvarchar(50),@ Item)as @ Item' – TheGameiswar
你得到了转换函数的语法错误。你看过语法吗? https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql –