SQL 查询字段中的字符串文字
String literal in SQL query field
我想在字符串文字查询中执行填充命令,但它给出了一些错误
没有字符串文字工作的查询:
SELECT apGr.*, 'Name: ' + apGr.GroupDesc + ' | Group: ' + apGr.GroupName GroupFull ,
abc = STUFF
(
(
SELECT ',' + appGrMn.Email
FROM APP_GroupManager As appGrMn
-- You only want to combine rows for a single ID here:
WHERE appGrMn.GroupId = apGr.GroupId
FOR XML PATH (''), TYPE
).value('.', 'varchar(max)')
, 1, 1, '')
FROM App_Group apGr
WHERE apGr.GroupId = 239
作为字符串文字的查询失败:
DECLARE @WhereQuery NVARCHAR(200) = ''
DECLARE @Query NVARCHAR(500)
SET @GroupId = 5
-- Insert statements for procedure here
IF(@GroupId IS NOT NULL)
BEGIN
PRINT(@GroupId)
SET @WhereQuery = 'WHERE apGr.GroupId = ' + @GroupId
END
ELSE IF (@SystemId IS NOT NULL)
BEGIN
SET @WhereQuery = 'WHERE apGr.SystemId = ' + @SystemId
END
ELSE IF (@GroupName IS NOT NULL)
BEGIN
SET @WhereQuery = 'WHERE apGr.GroupName = ''' + @GroupName + ''''
END
SET @Query = 'SELECT ''Name: '' + apGr.GroupDesc + '' | Group: '' + apGr.GroupName GroupFull ,
abc = STUFF
(
(
SELECT '','' + appGrMn.AdministratorMail
FROM APP_GroupManager As appGrMn
-- You only want to combine rows for a single ID here:
WHERE appGrMn.GroupId = apGr.GroupId
FOR XML PATH (''), TYPE
).value(''.'', varchar(max))
, 1, 1, '') ' +
'FROM App_Group apGr ' +
'JOIN T_SensitiveLevel AS tSen ON tSen.SensitiveLevelId = apGr.SensitiveLevelId ' + @WhereQuery
PRINT @Query
EXEC(@Query)
END
打印的查询看起来:
5
SELECT 'Name: ' + apGr.GroupDesc + ' | Group: ' + apGr.GroupName GroupFull ,
abc = STUFF
(
(
SELECT ',' + appGrMn.AdministratorMail
FROM APP_GroupManager As appGrMn
-- You only want to combine rows for a single ID here:
WHERE appGrMn.GroupId = apGr.GroupId
FOR XML PATH ('), TYPE
).value('.', varchar(max))
, 1, 1, ') FROM App_Group apGr JOIN T_SensitiveLevel AS tSen ON tSen.SensitiveLevelId = apGr.SensitiveLevelId WHERE apGr.GroupId = 2
它没有按应有的方式附加 @WhereQuery
,错误是:
Msg 102, Level 15, State 1, Line 20
Incorrect syntax near '.'.
如有任何帮助,我们将不胜感激。
存在一些与“”相关的语法错误。在输出中期望 ('') 时,您需要使用 '''' 而不是 ''。 Where 子句被截断,因为 @query 变得比它的长度 (500) 大。我对查询进行了一些更改,请检查:
DECLARE @WhereQuery NVARCHAR(200) = ''
DECLARE @Query NVARCHAR(2000)
declare @GroupId NVARCHAR(500)
declare @SystemId NVARCHAR(500)
declare @GroupName NVARCHAR(500)
set @GroupName='a'
SET @GroupId = 5
-- Insert statements for procedure here
IF(@GroupId IS NOT NULL)
BEGIN
PRINT(@GroupId)
SET @WhereQuery = 'WHERE apGr.GroupId = ' + @GroupId
END
ELSE IF (@SystemId IS NOT NULL)
BEGIN
SET @WhereQuery = 'WHERE apGr.SystemId = ' + @SystemId
END
ELSE IF (@GroupName IS NOT NULL)
BEGIN
SET @WhereQuery = 'WHERE apGr.GroupName = ''' + @GroupName + ''''
END
SET @Query = 'SELECT ''Name: '' + apGr.GroupDesc + '' | Group: '' + apGr.GroupName GroupFull ,
abc = STUFF
(
(
SELECT '','' + appGrMn.AdministratorMail
FROM APP_GroupManager As appGrMn
-- You only want to combine rows for a single ID here:
WHERE appGrMn.GroupId = apGr.GroupId
FOR XML PATH (''''), TYPE
).value(''.'', ''varchar(max)'')
, 1, 1, '''') ' +
'FROM App_Group apGr ' +
'JOIN T_SensitiveLevel AS tSen ON tSen.SensitiveLevelId = apGr.SensitiveLevelId ' + @WhereQuery +''
PRINT @Query
EXEC(@Query)
我想在字符串文字查询中执行填充命令,但它给出了一些错误
没有字符串文字工作的查询:
SELECT apGr.*, 'Name: ' + apGr.GroupDesc + ' | Group: ' + apGr.GroupName GroupFull ,
abc = STUFF
(
(
SELECT ',' + appGrMn.Email
FROM APP_GroupManager As appGrMn
-- You only want to combine rows for a single ID here:
WHERE appGrMn.GroupId = apGr.GroupId
FOR XML PATH (''), TYPE
).value('.', 'varchar(max)')
, 1, 1, '')
FROM App_Group apGr
WHERE apGr.GroupId = 239
作为字符串文字的查询失败:
DECLARE @WhereQuery NVARCHAR(200) = ''
DECLARE @Query NVARCHAR(500)
SET @GroupId = 5
-- Insert statements for procedure here
IF(@GroupId IS NOT NULL)
BEGIN
PRINT(@GroupId)
SET @WhereQuery = 'WHERE apGr.GroupId = ' + @GroupId
END
ELSE IF (@SystemId IS NOT NULL)
BEGIN
SET @WhereQuery = 'WHERE apGr.SystemId = ' + @SystemId
END
ELSE IF (@GroupName IS NOT NULL)
BEGIN
SET @WhereQuery = 'WHERE apGr.GroupName = ''' + @GroupName + ''''
END
SET @Query = 'SELECT ''Name: '' + apGr.GroupDesc + '' | Group: '' + apGr.GroupName GroupFull ,
abc = STUFF
(
(
SELECT '','' + appGrMn.AdministratorMail
FROM APP_GroupManager As appGrMn
-- You only want to combine rows for a single ID here:
WHERE appGrMn.GroupId = apGr.GroupId
FOR XML PATH (''), TYPE
).value(''.'', varchar(max))
, 1, 1, '') ' +
'FROM App_Group apGr ' +
'JOIN T_SensitiveLevel AS tSen ON tSen.SensitiveLevelId = apGr.SensitiveLevelId ' + @WhereQuery
PRINT @Query
EXEC(@Query)
END
打印的查询看起来:
5
SELECT 'Name: ' + apGr.GroupDesc + ' | Group: ' + apGr.GroupName GroupFull ,
abc = STUFF
(
(
SELECT ',' + appGrMn.AdministratorMail
FROM APP_GroupManager As appGrMn
-- You only want to combine rows for a single ID here:
WHERE appGrMn.GroupId = apGr.GroupId
FOR XML PATH ('), TYPE
).value('.', varchar(max))
, 1, 1, ') FROM App_Group apGr JOIN T_SensitiveLevel AS tSen ON tSen.SensitiveLevelId = apGr.SensitiveLevelId WHERE apGr.GroupId = 2
它没有按应有的方式附加 @WhereQuery
,错误是:
Msg 102, Level 15, State 1, Line 20 Incorrect syntax near '.'.
如有任何帮助,我们将不胜感激。
存在一些与“”相关的语法错误。在输出中期望 ('') 时,您需要使用 '''' 而不是 ''。 Where 子句被截断,因为 @query 变得比它的长度 (500) 大。我对查询进行了一些更改,请检查:
DECLARE @WhereQuery NVARCHAR(200) = ''
DECLARE @Query NVARCHAR(2000)
declare @GroupId NVARCHAR(500)
declare @SystemId NVARCHAR(500)
declare @GroupName NVARCHAR(500)
set @GroupName='a'
SET @GroupId = 5
-- Insert statements for procedure here
IF(@GroupId IS NOT NULL)
BEGIN
PRINT(@GroupId)
SET @WhereQuery = 'WHERE apGr.GroupId = ' + @GroupId
END
ELSE IF (@SystemId IS NOT NULL)
BEGIN
SET @WhereQuery = 'WHERE apGr.SystemId = ' + @SystemId
END
ELSE IF (@GroupName IS NOT NULL)
BEGIN
SET @WhereQuery = 'WHERE apGr.GroupName = ''' + @GroupName + ''''
END
SET @Query = 'SELECT ''Name: '' + apGr.GroupDesc + '' | Group: '' + apGr.GroupName GroupFull ,
abc = STUFF
(
(
SELECT '','' + appGrMn.AdministratorMail
FROM APP_GroupManager As appGrMn
-- You only want to combine rows for a single ID here:
WHERE appGrMn.GroupId = apGr.GroupId
FOR XML PATH (''''), TYPE
).value(''.'', ''varchar(max)'')
, 1, 1, '''') ' +
'FROM App_Group apGr ' +
'JOIN T_SensitiveLevel AS tSen ON tSen.SensitiveLevelId = apGr.SensitiveLevelId ' + @WhereQuery +''
PRINT @Query
EXEC(@Query)