Использовать Collate в 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

не удается разрешить конфликт параметров сортировки между "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,

или что-то?

3 ответов


вы ставите сортировку после каждого поля, а именно в худшем случае:

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

это исправит вашу проблему:

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

пространство получает те же параметры сортировки по умолчанию, что и база данных, поэтому оно должно иметь те же параметры сортировки, что и ваши столбцы. По-моему, это глупо


я исправил эту проблему, просто используя оператор concat:

p.FULLNAMES + ' ' + p.SURNAME