简体   繁体   English

发生错误:“无法在nvarchar上调用方法。”

[英]error occured : “Cannot call methods on nvarchar.”

I wrote a query to find answers related to a specific question, but I received this error when runing this code. 我写了一个查询来查找与特定问题相关的答案,但是在运行此代码时收到了此错误。

Cannot call methods on nvarchar 无法在nvarchar上调用方法

 select Posts.Id as Answer, ParentId as question, User.DisplayName as Answerer 
 FROM  Posts
INNER JOIN Users    ON Posts.OwnerUserId = Users.Id
WHERE 
ParentId in (SELECT Posts.Id
FROM  Posts
INNER JOIN PostTags ON Posts.Id          = PostTags.PostId
INNER JOIN Tags     ON PostTags.TagId    = Tags.id
INNER JOIN Users    ON Posts.OwnerUserId = Users.id
INNER JOIN PostTypes ON Posts.PostTypeId = PostTypes.Id
WHERE Tags.TagName   in 
(select 
   num.TagName as Tag

 from

(select TagName
from
Tags, PostTags, Posts
where Tags.Id = PostTags.TagId and Posts.Id = PostId
and Posts.CreationDate < '2015-04-20'
and Posts.CreationDate > '2015-01-01'
group by TagName) as rate

INNER JOIN
(select TagName 
from Tags, PostTags, Posts
where Tags.Id = PostTags.TagId and Posts.Id = PostId
group by TagName
having count(PostId) > 8000)as num 
ON rate.TagName = num.TagName
)
  AND Posts.AnswerCount > 1
  AND Posts.AcceptedAnswerId is not null
  AND Posts.Score > 0
  AND Posts.PostTypeId  = 1                -- PostTypeId = 1 -> Question
  AND Posts.CommunityOwnedDate is null
  )
AND Posts.PostTypeId  = 2                -- -> Answers

I think the problem is ParentId , but I do not understand what is wrong. 我认为问题是ParentId ,但我不明白出了什么问题。

You have a reserved word User in your query: 您的查询中有一个保留字User

select Posts.Id as Answer, ParentId as question, User.DisplayName as Answerer 选择Posts.Id作为Answer,ParentId作为问题,User.DisplayName作为Answerer

You will need to modify it to be [User].DisplayName 您需要将其修改为[User].DisplayName

Here is a great resource on reserved words in SQL: https://www.drupal.org/node/141051 这是SQL中保留字的一个很好的资源: https//www.drupal.org/node/141051

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我收到错误消息“无法在nvarchar上调用方法”,为什么? - I get the error “Cannot call methods on nvarchar” why? “将表达式转换为数据类型 nvarchar 时出现算术溢出错误。” - "Arithmetic overflow error converting expression to data type nvarchar." 如何修复错误 mssql:将数据类型十进制转换为 nvarchar 时出错。 在 Go 中使用 go-mssqldb - How to fix error mssql: Error converting data type decimal to nvarchar. in Go using go-mssqldb SQL异常:从存储过程返回值时,“将数据类型bigint转换为nvarchar时出错。” - Sql Exception : “Error converting data type bigint to nvarchar.” , when returning a value from stored procedure SQL列中的XML:无法在nvarchar(max)上调用方法 - XML from SQL column: Cannot call methods on nvarchar(max) 无法在nvarchar上调用方法-db中没有nvarchar-试图参数化表名 - Cannot call method on nvarchar - no nvarchar in db - trying to parameterize table names 从nvarchar中删除第一行和第一个字符。 女士SQL - Remove first new line and first character from nvarchar. Ms SQL SQL错误-无法将nvarchar转换为十进制 - SQL error - Cannot convert nvarchar to decimal 无法在char上调用方法 - Cannot call methods on char 无法在varchar(max)上调用方法 - Cannot call methods on varchar(max)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM