-2

以下は、複数の列の値を結合しようとしている私のクエリです

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)

Query を実行しているとき、取得しています

エラー:

オペランド データ型 varchar は、sqlServer の減算演算子に対して無効です

4

1 に答える 1

1

人々が言っ​​たように、正確なクエリに従うのは少し難しいですが、エラーが示すように、特定の問題は、列に-演算子を使用していることです。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

于 2013-01-08T13:20:29.760 に答える