0

テーブルに値が格納されている列があります

HX CAP SCR GD5 1/2-13 X 3 3/4
HX CAP SCR GD8 1/2-13 X 4 1/4 
HX CAP SCR Grade 5 1/2-13 X 5 1/2
HX CAP SCR Grade 8 1/2-13 X 6 1/2

ここで、これらの値を次のような別のテーブルに保存する必要があります

CATEGORY               SIZE
HX CAP SCR GD5         1/2-13 X 3 3/4
HX CAP SCR GD8         1/2-13 X 4 1/4
HX CAP SCR Grade 5     1/2-13 X 5 1/2
HX CAP SCR Grade 8     1/2-13 X 6 1/2

カテゴリをサイズ値から分離する必要があります。

This is what I have so far, but it is not working the GD5 and GR8 are part of the category column.

SELECT  CustDesc
        ,'??????' as Category
        ,SUBSTRING(CustDesc,PatIndex('%[0-9.-]%', CustDesc),8000) as Size   
FROM [##CustParts]

上記のクエリの結果

CustDesc                    Category    Size
HX CAP SCR GD5 1/2-13 X 3   ??????          5 1/2-13 X 3 

これを行うためのクエリを教えてください....

4

3 に答える 3

1

合理的と思われるルールを作る必要があります。たとえば、「X」の前の最初のスペースの直後にサイズが始まるように見えます。これは、SQL Server の (プリミティブ) 文字列関数を使用して取得できます。

select ltrim(rtrim(left(val, pos1 - spacebefore))) as product,
     substring(val, pos1 - spacebefore + 1, 1000) as size
from (select t.*, charindex(' ', reverse(left(val, pos1-1))) as spacebefore
      from (select t.*,
                   charindex(' X ', val) as pos1
            from (select 'abce 15/3 x 2' as val) t
           ) t
     ) t
于 2012-07-19T01:24:35.813 に答える
0

こんにちは、文字列に常に文字「1/2」が含まれている場合、これは完全に機能します。

CREATE TABLE #tbl(col1 varchar(200))

INSERT INTO #tbl 
VALUES('HX CAP SCR GD5 1/2-13 X 3 3/4'),
('HX CAP SCR GD8 1/2-13 X 4 1/4'),
('HX CAP SCR Grade 5 1/2-13 X 5 1/2'),
('HX CAP SCR Grade 8 1/2-13 X 6 1/2')

select Left(col1,CHARINDEX('1/2',col1,1)-1),RIGHT(col1,len(col1)-(CHARINDEX('1/2',col1,1)-1)) from #tbl
于 2012-07-19T04:41:10.637 に答える
0

あなたの例に基づいて、番号1が各タプルの値を解析するための参照であるように見えます。tsql の SQL CHARINDEX コマンドの調査 - 文字列内のテキストの位置を検索

解析する値が他にありますか? 解析するデータのより良い断面図を提供してください。- どうも

于 2012-07-19T01:19:27.243 に答える