web-dev-qa-db-ja.com

CONCATで照合順序を使用する

間に空白を入れて2つの列を連結しようとしましたが、照合エラーが発生しました。

SELECT DISTINCT
    p.PERSON_ID,
    p.ID_NUMBER,
    CONCAT(p.FULLNAMES, CONCAT(' ', p.SURNAME)) AS NAME,
    o.ORG_NAME,
    w.WARD_DESCRIPTION AS WARD,
    ess.DESCRIPTION AS SECTOR

Concat操作での「SQL_Latin1_General_CP1_CI_AS」と「Latin1_General_CI_AS」間の照合の競合を解決できません

私のデータベースの両方の問題のある列の照合は次のとおりです。Latin1_General_CI_AS

それで、私は空白をこの照合に照合しようとしていましたが、これを行う方法がわかりません。私の試み:

CONCAT(p.FULLNAMES, (CONCAT((COLLATE Latin1_General_CI_AS = ' '), p.SURNAME))) AS NAME,

か何か?

14
Carel

各フィールドの後にCOLLATEを配置します。つまり、最悪のシナリオでは次のようになります。

SELECT DISTINCT
    CONCAT(p.FULLNAMES COLLATE Latin1_General_CI_AS, 
      (CONCAT(' ' COLLATE Latin1_General_CI_AS, 
          p.SURNAME COLLATE Latin1_General_CI_AS))) AS NAME
FROM Person p
14
StuartLC

これで問題が解決します。

SELECT CONCAT(p.FULLNAMES,' ' collate Latin1_General_CI_AS,p.SURNAME) AS NAME

スペースはデータベースと同じデフォルトの照合順序を取得しているため、列と同じ照合順序である必要があります。私の意見ではちょっとばかげている

4
t-clausen.dk

Concat演算子を使用するだけで、この問題を修正しました。

p.FULLNAMES + ' ' + p.SURNAME
0
user764754