21

我试图用中间的空格连接 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,

或者其他的东西?

4

3 回答 3

19

您将 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
于 2014-05-15T08:42:58.793 回答
5

这将解决您的问题:

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

该空间的默认排序规则与数据库相同,因此它必须与您的列具有相同的排序规则。在我看来有点傻

于 2014-05-15T08:47:16.623 回答
1

我通过简单地使用 concat 运算符解决了这个问题:

p.FULLNAMES + ' ' + p.SURNAME
于 2015-05-13T12:02:47.723 回答