人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQLについて質問です。

項目に入っているデータを20文字で区切って保存したいと考えています。

★テーブル名 TEST

★項目名 KOUMOKU1 , KOUMOKU2 , KOUMOKU3

例えば

KOUMOKU1にデータが入っていて

このデータをSQL処理

20文字以内の場合はそのままKOUMOKU2に文字が入ります。

しかし

20文字を超える場合

最初の20文字を KOUMOKU2 に入れて 残りの文字を KOUMOKU3

に入れます。

上記のようなSQL命令を行いたいのですが実行可能でしょうか?

お手数をおかけしますがよろしくお願いいたします。

※データベースはPhpMyAdminを使用しています。





●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:phpMyAdmin SQL test データ データベース
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● code_tk
●35ポイント

とりあえずphpMyAdminってデータベースはないですよって突っ込みは別にしておいて

case / length / substring関数を使用すれば可能です

他にもやり方がありますしとりあえず書いてみただけですが一応

select

KOUMOKU1,

case

when length(KOUMOKU1) <= 20 then KOUMOKU1

else substring(KOUMOKU1,1,20)

end KOUMOKU2,

case

when length(KOUMOKU1) > 20 then substring(KOUMOKU1,21)

end KOUMOKU3

from

TEST

実行はしてませんのであしからず

◎質問者からの返答

ご回答ありがとうございます。


2 ● kn1967
●100ポイント ベストアンサー

CASE 式は覚えておいて損の無いものなので、

横から出ても良いものかと、躊躇しましたが、

今件の場合は、もっともっとシンプルに出来ますので、横槍失礼します。

UPDATE TEST
SET KOUMOKU2 = LEFT(KOUMOKU1, 20), KOUMOKU3 = SUBSTR(KOUMOKU1, 21)

文字列を扱う関数はいろいろあって、下記に載ってますので、

ざぁっとで結構ですから、眺めてみてください。

MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.3.2 文字列関数

(そちらの現在のMySQLのバージョンが分からなくなってしまったので、

少し古めのページにリンクしてあります。)

◎質問者からの返答

ご回答ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ