-2

私は以下のようなテーブルを持っています

 Property   Value

 Adapter    [00000007] Intel(R) 82567LM Gigabit Network Connection
 Adapter    [00000009] VMware Virtual Ethernet Adapter for VMnet1
 Adapter    [00000012] Dell Wireless 1397 WLAN Mini-Card

上記の表から、値列の文字列を以下のように2つの列に分割したい:

String1        String2
[00000007]     Intel(R) 82567LM Gigabit Network Connection
[00000009]     VMware Virtual Ethernet Adapter for VMnet1

解決策をお願いします。

4

4 に答える 4

0

あなたのケースの単純なものがうまくいくなら:

select
    Property,
    substring(Value, 2, 8) as String1,
    -- or substring(Value, 1, 10) if you want [ and ]
    right(Value, len(Value) - 11) as String2
from Table1

sql fiddle demo

于 2013-10-11T13:26:30.293 に答える
0

これは、最初のスペースの前に任意の数の文字をサポートするもう少し一般的なバージョンです ( Fiddle demo ):

SELECT LEFT(@S, CHARINDEX(' ',@S)) String1,
       RIGHT (@S, LEN(@S) - CHARINDEX(' ',@S)) String2

テーブルへの適用:

SELECT LEFT(Value, CHARINDEX(' ',Value)) String1,
       RIGHT (Value, LEN(Value) - CHARINDEX(' ',Value)) String2
FROM yourTable
于 2013-10-11T13:26:44.010 に答える
0
select 
  substring(Value,charindex('[',Value,1),charindex(']',value,charindex('[',Value,1)-1)) as String1
  ,ltrim(rtrim(substring(Value,charindex(']',value)+1,len(value)))) as String2
from Table1

SQL フィドル

于 2013-10-11T13:09:22.807 に答える
0

質問が変更されたため、これはもはや関連性がありませんが、他の人にとっては役立つかもしれません...

これはうまくいくようです:

declare @value varchar(100) = '[00000007] Intel(R) 82567LM Gigabit Network Connection'

SELECT 
SUBSTRING(@value, 0, CHARINDEX(']', @value,0) + 1) firstPart,
LTRIM(RTRIM(SUBSTRING(@value, CHARINDEX(']', @value,0)+1, LEN(@value)))) secondPart
于 2013-10-11T13:09:52.870 に答える