2

私は結果を持っています

code     Declaration      Quantity
123      a1                11boxes Note:(Each box Contains 20nos)
123      a2                230nos Note:(Each contains 100nos)
123      a3                60nos

として表示する必要があります

code     Declaration      Quantity
123      a1                11boxes 
123      a2                230nos 
123      a3                60nos

行を分割してメモの前に表示することはできますか?

4

4 に答える 4

1

CHARINDEX()SQL Server-2008の関数を使用して長さを取得し、0から長さ-1を使用して文字を切り取ることができますSUBSTR()

于 2012-12-05T10:42:55.620 に答える
1

Note:または、いくつかの量が試していない可能性があると思われる場合。

select code, declaration, 
       SUBSTRING(Quantity,0,
             CASE WHEN charindex('Note:',Quantity,0)> 0 
                  THEN charindex('Note:',Quantity,0) 
             ELSE LEN(Quantity)+1 END) AS Quantity
From YourTable
于 2012-12-05T10:44:50.823 に答える
0

quantityフィールドで単語を検索しnoteて結果を返すことができますが、この回答は、メモの前に別の単語が含まれていないことを前提としています。

を確認したい場合はnote、次のように を使用できますcharindex()

select code, 
  declaration, 
  case 
    when charindex('Note', quantity) > 0
    then rtrim(left(quantity, charindex('Note', quantity)-1))
    else quantity end as Quantity
from yourtable

SQL Fiddle with Demoを参照してください。

結果は次のとおりです。

| CODE | DECLARATION | QUANTITY |
---------------------------------
|  123 |          a1 |  11boxes |
|  123 |          a2 |   230nos |
|  123 |          a3 |    60nos |
于 2012-12-05T10:43:56.050 に答える
0
select code,declaration, case  when patindex('% %',ltrim(quantity))>0 
             then substring(ltrim(descr),0,patindex('% %',ltrim(quantity)))
             else quantity end 
      as quantity
from table_name

空白文字が最初に出現するまで、列値から部分quantity文字列が抽出されます。'% %'

LTRIM任意の数の先頭の空白を削除します。そうしないと、上記のクエリで誤った結果が返されます。

PATINDEX() : 指定された式でパターンが最初に出現する開始位置を返します。パターンはここではスペース文字です。

これは、「注:」文字列が列の値に存在しない場合でも機能します。

于 2012-12-05T11:09:17.623 に答える