Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 server 2008 错误:操作数数据类型varchar对于sqlServer中的减法运算符无效_Sql Server 2008 - Fatal编程技术网

Sql server 2008 错误:操作数数据类型varchar对于sqlServer中的减法运算符无效

Sql server 2008 错误:操作数数据类型varchar对于sqlServer中的减法运算符无效,sql-server-2008,Sql Server 2008,下面是我的查询,我试图在其中组合多个列值 SELECT DISTINCT CONVERT(varchar, Em.ADDR1) - CONVERT(varchar, Em.ADDR2) - CONVERT(varchar, Em.ADDR3) - CONVERT(varchar, Dm.DIST_NAME) - CONVERT(varchar,Sm.STATE_NAME) - CONVERT(varchar, Cm.COUNTRY_NAME) AS Expr1 FROM

下面是我的查询,我试图在其中组合多个列值

SELECT DISTINCT  CONVERT(varchar, Em.ADDR1) - CONVERT(varchar, Em.ADDR2) - CONVERT(varchar, Em.ADDR3) - CONVERT(varchar, Dm.DIST_NAME) - CONVERT(varchar,Sm.STATE_NAME)
- CONVERT(varchar, Cm.COUNTRY_NAME) AS Expr1
FROM            EMP_MST AS Em INNER JOIN
  DESIG_MST AS Dsgm ON Em.DESIG_NO = Dsgm.DESIG_NO AND Dsgm.COMPANY_NO = Em.COMPANY_NO INNER JOIN
  DEPT_MST AS Dptm ON Em.DEPT_NO = Dptm.DEPT_NO AND Dptm.COMPANY_NO = Em.COMPANY_NO INNER JOIN
  COUNTRY_MST AS Cm ON Em.COUNTRY_NO = Cm.COUNTRY_NO INNER JOIN
  STATE_MST AS Sm ON Em.STATE_NO = Sm.STATE_NO AND Em.COUNTRY_NO = Sm.COUNTRY_NO INNER JOIN
  DIST_MST AS Dm ON Em.DIST_NO = Dm.DIST_NO AND Em.STATE_NO = Dm.STATE_NO AND Em.COUNTRY_NO = Dm.COUNTRY_NO LEFT OUTER JOIN
  EMP_MST AS MEm ON Em.MANAGER = MEm.EMP_NO
WHERE        (1 = 1) AND (Em.EMP_NO LIKE '%%') AND (Em.COMPANY_NO = 1)
当我执行查询时,我得到

错误:

操作数数据类型varchar对于sqlServer中的减法运算符无效


正如人们所说,精确查询有点困难,但具体问题是,正如错误所述,您在
varchar
列上使用了
-
运算符

如果您试图连接
varchar
值,则应使用
+
运算符,例如:

SELECT DISTINCT  CONVERT(varchar, Em.ADDR1) + CONVERT(varchar, Em.ADDR2) + CONVERT(varchar, Em.ADDR3) + CONVERT(varchar, Dm.DIST_NAME) + CONVERT(varchar,Sm.STATE_NAME)
+ CONVERT(varchar, Cm.COUNTRY_NAME) AS Expr1

如果这些列都是
varchar
,您可能也不需要
CONVERT
函数。

您想做什么?您预期的结果是什么?为什么要使用
(1=1)
(Em.EMP_NO像“%”)
?@UmutDerbentoğlu:我试图显示用户地址,它是多个列的组合values@IvanG:此查询将进一步用于搜索数据,这也是我使用likeit的原因看起来像
CONVERT(varchar,Em.ADDR1)-CONVERT(varchar,Em.ADDR2)
操作对
varchar
sThank you没有意义。它正在工作。。