1

我不能为我的生活,弄清楚我在这里做错了什么。

当我运行查询以将名称从 Active Directory 提取到 sql server 数据库中时,输出如下所示:

CN=Jackson\, Andrew,OU=Information Technology,OU=Departments,DC=MO,DC=canton,DC=MA,DC=us.

我想做的是每次都跳闸,所以输出看起来更像这样:

Jackson, Andrew

下面的代码让我失望了。它一直告诉我 REPLACE 需要 3 个参数。

我似乎无法弄清楚。

REPLACE(LEFT(manager,charindex('','',manager)-1),''CN='','''') as Manager
4

4 回答 4

4
REPLACE(SUBSTRING(<query output>,4,CHARINDEX(',OU=',<query output>) - 4),'\','')

该解决方案对您的数据做了很多假设,但它可能对您有用。

于 2013-02-15T18:22:48.890 回答
2

关于现有查询的问题,似乎所有双单引号都应该只是单单引号。

select REPLACE(LEFT(manager,charindex(',',manager)-1),'CN=','') as Manager
于 2013-02-15T18:20:25.890 回答
0

替换\,为字符串中不太可能出现的字符或字符组合,然后拆分为,,然后将特殊字符/组合变为,

REPLACE(
  REPLACE(
    LEFT(
      REPLACE(manager, ''\,'', CHAR(127)),
      charindex('','',REPLACE(manager, ''\,'', CHAR(127)))-1),
    ''CN='',
    ''''
  )
  , CHAR(127), '','') as Manager

SQL 小提琴演示

于 2013-02-15T18:35:30.453 回答
0

正如 Marc 在评论中所写,可能有更好的方法来进行查询。我没有AD经验,所以我不会去那里。

不过,关于REPLACE,问题似乎是''CN=''。这些不应该是单引号吗?换句话说,它应该是'CN='

于 2013-02-15T18:15:25.553 回答