我是否从AD中的管理员名称中删除了所有内容?

时间:2013-02-15 18:11:09

标签: sql sql-server-2008 sql-server-2005

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

当我运行查询以将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 个答案:

答案 0 :(得分:4)

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

此解决方案对您的数据做了很多假设,但它可能适合您。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

关于REPLACE,看起来问题是''CN=''。那些不应该是单引号吗?换句话说,它应该是'CN='

答案 3 :(得分:0)

\,替换为不太可能出现在字符串中的字符或字符组合,然后在,上拆分,然后将特殊字符/组合转换为,:< / p>

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

SQL Fiddle Demo