- 締切済み
カンマごとに値を切り出したい。
SQL SERVER2005環境です。 テーブルのある列に、カンマ区切りの値が存在します。 たとえば、生年月日がまとめてつっこまれているような列(CHAR型)で、 それを切り出して利用したいのです。 たとえば、 A --- 1985,01,02 このように値が入っていた場合、年月日が欲しければ1985、月が欲しければ 05、というように出力されるSELECT文を投げたいのです。 実際のデータは、月が3桁で入っていたり(005のように)するため、 SUBSTRINGではうまくいきません。 イメージとしては、カンマごとに切り抜いて出力できたら、と思って いるのですが…可能でしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
SELECT year(納期) FROM tab1; SELECT day(納期) FROM tab1; SELECT month(納期) FROM tab1; なお、一応、これでも切り出せました。 (SQLSERVER2000)
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文で切り出せないことはないでしょうが・・・。 フロントエンドで切り出す方が簡単かと思います。
補足
回答ありがとうございます。 書き方が悪かったのですが、実際のデータは年月日に限らず、 たとえば、1111,2345,3456,2345のようにカンマ区切りで 不規則な桁数の数字があるだけです。 ですので、固定値を使う方法だと少し苦しいのです。 フロントエンド…ストアドでの開発なのですが、制御する ことは可能でしょうか?