Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL联合失败_Sql_Sql Server - Fatal编程技术网

SQL联合失败

SQL联合失败,sql,sql-server,Sql,Sql Server,我试图使用mssql在两个结果集之间执行并集,但是我得到以下错误: Msg 421,16级,状态1,第1行文本数据类型不能为 由于不可比较而被选择为独立的 我必须将这些字段保留为文本字段 干杯,我该如何解决这个问题。UNION本身被解释为使用DISTINCT(可能是因为UNION试图将两个查询划分为一个不同的列表)。使用UNION ALL UNION本身被解释为使用DISTINCT(可能是因为UNION试图将两个查询划分为一个不同的列表)。使用UNION ALL 问题在于数据的类型(文本)。您是

我试图使用mssql在两个结果集之间执行并集,但是我得到以下错误:

Msg 421,16级,状态1,第1行文本数据类型不能为 由于不可比较而被选择为独立的

我必须将这些字段保留为文本字段


干杯,我该如何解决这个问题。

UNION本身被解释为使用DISTINCT(可能是因为UNION试图将两个查询划分为一个不同的列表)。使用UNION ALL

UNION本身被解释为使用DISTINCT(可能是因为UNION试图将两个查询划分为一个不同的列表)。使用UNION ALL

问题在于数据的类型(文本)。您是否可以将该表改为使用VARCHAR(MAX)?还是从联合中删除文本字段?或者在查询中将字段强制转换为VARCHAR(MAX)


VARCHAR(MAX)在功能上与文本相同(长度不限,不存储在行中等)。

问题在于数据的类型(文本)。您是否可以将该表改为使用VARCHAR(MAX)?还是从联合中删除文本字段?或者在查询中将字段强制转换为VARCHAR(MAX)


VARCHAR(MAX)在功能上与文本相同(长度不限,不存储在行中等)。

您能格式化SQL查询吗?没有人能读到。你为什么不能用
VARCHAR(MAX)
代替
TEXT
?毕竟你是在铸造它们。你能格式化你的SQL查询吗?没有人能读到。你为什么不能用
VARCHAR(MAX)
代替
TEXT
?毕竟你是在铸造它们..尽管UNION all(可能)会改变实际的结果集。i、 e.返回所有行,即使是重复的行,而简单的并集则不会。但“全部并集”(UNION all)将(可能)更改实际的结果集。i、 e.返回所有行,甚至是重复的行,而简单的并集则不返回。在MSSQL中没有varchar,只有nvarchar。这给php带来了巨大的问题。对varchar的支持从sql server 2008开始就被删除了。@bobo2000这根本不是真的。即使在SQL Server 2012中,它也完全受支持:您是否有来源来验证不支持varchar?我们有SQl 2008在工作,它仍然有varchar和nvarchar。根据我的经验,在查询中强制转换字段或将字段转换为varchar(max)将在检查不同值时导致巨大的性能问题。在MSSQL中没有varchar,只有nvarchar。这给php带来了巨大的问题。对varchar的支持从sql server 2008开始就被删除了。@bobo2000这根本不是真的。即使在SQL Server 2012中,它也完全受支持:您是否有来源来验证不支持varchar?我们有SQl 2008在工作,它仍然有varchar和nvarchar。根据我的经验,在查询中强制转换字段或将字段转换为varchar(max)将在检查不同值时导致巨大的性能问题。
SELECT TOP 5 
  Notices.Id, 
  NoticeLoc.Notices_Id,
  Loc.Id as Loc_Id, 
  CAST(Notices.Text AS TEXT) as Text, 
  CAST(Notices.Title AS TEXT) as Title, 
  Notices.CDate as RDate 
FROM NoticeLoc 
  JOIN Notices ON NoticeLoc.Notices_Id=Notices.Id JOIN Loc ON NLoc.Loc_Id=Loc.Id WHERE Loc_Id IN (1)

UNION 

SELECT TOP 5 
  Notices.Id, 
  '',
  '', 
  CAST(Notices.Text AS TEXT) as Text, 
  CAST(Notices.Title AS TEXT) as Title, 
  Notices.CDate as RDate 
FROM NoticeC 
  JOIN Notices ON NoticeC.Notices_Id=Notices.Id WHERE C_Id=110 AND CDate BETWEEN '10/01/2011' AND '07/14/2025' ORDER BY RDate desc