ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.4006679 カンマごとに値を切り出したい。
質問者:ginfix SQL SERVER2005環境です。

テーブルのある列に、カンマ区切りの値が存在します。
たとえば、生年月日がまとめてつっこまれているような列(CHAR型)で、
それを切り出して利用したいのです。

たとえば、

A
---
1985,01,02

このように値が入っていた場合、年月日が欲しければ1985、月が欲しければ
05、というように出力されるSELECT文を投げたいのです。

実際のデータは、月が3桁で入っていたり(005のように)するため、
SUBSTRINGではうまくいきません。
イメージとしては、カンマごとに切り抜いて出力できたら、と思って
いるのですが…可能でしょうか?
困り度:
  • 困っています
質問投稿日時:
08/05/08 14:42
この質問に対する回答は締め切られました。

回答

ANo.2 SELECT year(納期) FROM tab1;
SELECT day(納期) FROM tab1;
SELECT month(納期) FROM tab1;

なお、一応、これでも切り出せました。
(SQLSERVER2000)
回答者:Husky2007
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/05/08 15:35
この回答への補足回答ありがとうございます。

書き方が悪かったのですが、実際のデータは年月日に限らず、
たとえば、1111,2345,3456,2345のようにカンマ区切りで
不規則な桁数の数字があるだけです。
ですので、固定値を使う方法だと少し苦しいのです。

フロントエンド…ストアドでの開発なのですが、制御する
ことは可能でしょうか?
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答良回答10pt

ANo.1 tab1;

ID__納期
_1__05,5,2008
_2__05,6,2008
_3__05,6,2008

SELECT LEFT(納期,patindex('%,%', 納期)-1) FROM tab1

|(expession)|
|05_________|
|05_________|
|05_________|

SELECT SUBSTRING(納期,patindex('%,%', 納期)+1,10) FROM tab1

|(expession)|
|5,2008_____|
|6,2008_____|
|6,2008_____|

SELECT LEFT(SUBSTRING(納期,patindex('%,%', 納期)+1,10), patindex('%,%', SUBSTRING(納期,patindex('%,%', 納期)+1,10))-1) FROM tab1

|(expession)|
|5__________|
|6__________|
|6__________|

と、SELECT文で切り出せないことはないでしょうが・・・。
フロントエンドで切り出す方が簡単かと思います。
回答者:Husky2007
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/05/08 15:17
この回答へのお礼この回答にお礼をつける(質問者のみ)