2016-06-30 6 views
1

現在、以下のような表の列値があります。SQL Server 2008括弧内および外の単一列値のスワップ

StudentName 

ABC [DEF] 

GHI [JKL] 

MNO [PQR] 

そして、次のようにStudentName列の値を変更します。

StudentName 

DEF [ABC] 

JKL [GHI] 

PQR [MNO] 

大括弧の内側と外側の値を入れ替えるSQL関数がありますか?

+0

おそらく、更新文を実行するには、col1 = col2、col2 = col1と設定する必要があります。 – ZLK

+0

私は2つの列の値をスワップする必要がある場合にのみ動作しますが、私の要求は1つの列の値の範囲内に入れ替えることです – Mark

+0

私はそれがすべての列であることに気付きませんでした。その場合は、他に考慮すべき点があります。おそらくABCは姓であり、DEFは指定された名前です。それは常に「テキストテキスト」ですか?ミドルネームはどうなりますか? – ZLK

答えて

0

いいえ、文字列の一部を切り替える特別な機能はありません。

SELECT * INTO tbl_Students 
FROM (VALUES 
('ABC [DEF]'), 
('GHI [JKL]'), 
('MNO [PQR]')) as x(StudentName); 
GO 
SELECT * FROM tbl_Students; 
GO 
UPDATE tbl_Students 
SET StudentName = 
    REPLACE(RIGHT(StudentName, LEN(StudentName) - CHARINDEX ('[',StudentName)),']',' [') 
    + REPLACE(LEFT(StudentName,CHARINDEX ('[',StudentName)-1),' ',']'); 
GO 
SELECT * FROM tbl_Students; 
GO 
+0

Hmm。これはフォーマットが常に "text [text]"で、 "text text [text]"のようなものでない場合には有効です。 – ZLK

+0

あなたは正しいです。複数のスペースがある場合は、より複雑なロジックを使用する必要があります。私はそれが学生であると仮定し、私は彼に学習方法を示しました。今、彼はそれがどのように行われているのかを見て、自分の状況に合わせることができます。もし彼ができないなら、おそらくそれは彼が学位を取得しようとしている間違った分野です。 –

+0

おかげでスラヴァ、私はあなたの方法は私の要求のために働くと思う。 – Mark

関連する問題