我不能为我的生活,弄清楚我在这里做错了什么。
当我运行查询以将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
答案 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