2012-05-03 17 views
0

私は2008年 ユーザー名がデータにSQL Server 2008でデータを解析する方法は?

Username 
corp\abc 
corp\petern 
corp\timw 

を以下しているので、

に私は私のユーザー名がどのように

Username 
abc 
petern 
timw 

する必要がSQL Serverで私のテーブルにユーザー名と呼ばれる列名を持っています私はユーザー名のデータを解析してcorpをスキップしますか?

ありがとうございました。あなたは、SQL ServerとWindows認証を混ぜた場合の実用的な - ユーザ名全体を返しますユーザ名の機能にはバックスラッシュがない場合

select substring (username, charindex ('\', username, 1) + 1, len(username)) 

答えて

3

あなたは、データを分割するPARSENAMEを使用することができますが、機能は区切り文字としてドット(.)を使用しています。したがって、最初にバックスラッシュ(\)をピリオドまたはドット(.)に置き換える必要があります。

Click here to view the demo in SQL Fiddle.

スクリプト

CREATE TABLE users 
( 
    username VARCHAR(30) NOT NULL 
); 

INSERT INTO users (username) VALUES 
    ('corp\abc'), 
    ('corp\corporate\'), 
    ('corp\yescorp'), 
    ('corp\def'), 
    ('\corpabc\'), 
    ('corpabc\'); 

SELECT username 
    , PARSENAME(REPLACE(username, '\', '.'), 1) AS usernameonly 
FROM users; 

出力

USERNAME   USERNAMEONLY 
----------------- ------------ 
corp\abc   abc 
corp\corporate\ 
corp\yescorp  yescorp 
corp\def   def 
\corpabc\ 
corpabc\  
+0

どうもありがとうございました。 :) – Nemo

1

ユーザー名を抽出するために、次の式を使用する場合があります。

0
Update dbo.Users 
Set Username = replace(Username, 'corp\\', ''); 

第1の選択の結果は、(一般的に、それはステートメントを更新データとよいでしょう)OKに見えるかどうかを確認することで、事前に引用を確認してください:

select replace(Username, 'corp\\', '') from dbo.Users 
0

あなたはこのようなユーザー名を取得することができます:

SELECT RIGHT('corp\username',LEN('corp\username')-PATINDEX('%\%','corp\username')) 

=>

SELECT RIGHT(username,LEN(username)-PATINDEX('%\%',username)) 

テキスト、データ型はnvarchar(nは - 最大)のこの作品

関連する問題